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.

[参考译文] CCS/CODECOMPOSER:编译器出错

Guru**** 2562120 points


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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/903717/ccs-codecomposer-compilier-makes-error

器件型号:CODECOMPOSER

工具/软件:Code Composer Studio

此代码永远不会退出循环。 LongCount 在中断中递增

void mSWait( unsigned int WaitDuration ) //以1ms 为单位测量

 unsigned int msTimer =长计数;
   while ((longCount - msTimer)< WaitDuration);

这是失望
     mSWait():
B208:  421E 0488          MOV.W  &LongCount、R14
     $C$L2:b20c:  4E0F               MOV.W  R14、R15
B20e:  8E0F               低于 W  R14、R15
B210:  9C0F               CMP.W  R12、R15
B212:  2BFC               JLO    ($C$L2)
B214:  4130               RET
由于循环内未读取&LongCount、因此它永远不会退出、这一点不足为奇

与以下代码相同:
void mSWait( unsigned int WaitDuration ) //以1ms 为单位测量

 unsigned int msTimer =长计数;
 unsigned int x;
 Do x=LongCount - msTimer - WaitDuration;
 while (x);
}   

但是、将 while 更改为 while (x<0)有效。 讽刺的是、编译器说这是一个毫无意义的比较。 帮助!

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

    [引用 user="Kent Deines">由于循环内未读取&LongCount、因此从不退出并不奇怪问题似乎是 LongCount 变量未声明为易失性变量。

     如何声明 LongCount?

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

    运算。 我弄错了。 while (x)不起作用。 该功能被消除。

    通过使 LongCount 变得易失性、我让我知道它是有效的。 很有道理、但最好编译器至少提供警告和提示。 可能是错误