工具/软件: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)有效。 讽刺的是、编译器说这是一个毫无意义的比较。 帮助!