This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] 编译器/CODECOMPOSER:相同的表达式生成错误ISR

Guru**** 2606525 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/630951/compiler-codecomposer-same-expression-makes-fault-isr

部件号:CODECOMPOSER

工具/软件:TI C/C++编译器

您好,

我正在使用TM4c129 MCU和CCS 6.1 .3编译器TI 15.12 .1.LTS开发一个项目。

在这个项目中,使用I2C,以太网,系统工作正常,没有任何错误,

现在,我使用了以下陈述,该陈述已在其他模块"制造故障ISR"中使用,

httpd.c (模块1)

data=fault.value[0];

user_i2c.c (模块2)

data=fault.value[0];

变量"data"是一个外部变量(类型:int)

变量fault.value[0]是 结构变量,外部(类型:Int)

试用

我尝试过优化设置,甚至是优化,但无法解决,

我已经用关键字"volate"更改了这两个变量,结果没有效果

如果在任何一个模块上命令该线路(data=fault.value[0];),则系统工作正常,没有任何故障ISR,

意见

i.不同模块中的相同表达式是否可以通过编译器优化来单一?

ii.编译器优化是否会干扰同一表达式?

我知道这个问题,帮助解决。

提前感谢

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您说的是从...更改为...

    dineshkumar mani 说:
    data=fault.value[0];

    至...

    dineshkumar mani 说:
    (data=fault.value[0];)

    ...有什么不同?  您只添加了括号。  这不会对编译器生成的代码产生影响。   

    您可能会遇到一些间歇性问题,似乎只是与括号有关。  请再次检查。

    谢谢,此致,

    -George

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    亲爱的George:

    我不添加任何括号,

    我只需在一个模块中命令该行,即可正常工作。

    //data=fault.value[0];

    如何知道间歇性PBM?如何解决?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    因此,当您从此行中删除注释时...

    dineshkumar mani 说:
    //data=fault.value[0];

    ...您的系统将从工作状态更改为故障状态。  是这样吗?

    这是一个非常简单的陈述。  TI ARM编译器从一开始就为这样的语句生成了正确的代码。  编译器不可能直接导致该问题。  我怀疑问题一直存在,但更改此代码才会导致问题最终出现。

    您需要更好地了解代码出错的原因。  为此,您需要在系统和软件上调试技术的帮助。  由于您使用的是TM4C系统, 我建议您在 TM4C微控制器论坛中开始新的主题。  或者,如果您愿意,我可以将此主题移至该论坛。

    谢谢,此致,

    -George