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.

TMS320F28035: 编译器2级优化时中断变量被优化

Part Number: TMS320F28035

【问题现象】

编译平台CCS12.6,编译器22.6.0,开2级优化,有一个中断变量 IsrVar.A,在中断内进行计时供主循环使用,在执行一下代码时卡死。本意是想通过中断延时一段时间的,后面测试时发现卡在了死循环里。

 IsrVar.A = 0;

while (IsrVar.A  > 100) {

赋值语句1;}

赋值语句2;

【原因分析】

查看汇编代码发现while循环的判断表达被固定成使用0了,从这个现象来看原因是中断变量未指明外部属性,编译器优化时根据上下文可以确定IsrVar.A的值,不会重新读取以提高执行效率。

查看编译器优化说明文档《TMS320C28x Optimizing C_C++ Compiler_v22.6.0.LTS.pdf》,在3.16.8这一节有说影响循环次的变量的表达式会被优化成更高效的,我认为这就是对此现象的官方解释,请问我的理解是否正确?

x 出现错误。请重试或与管理员联系。