Other Parts Discussed in Thread: EK-TM4C1294XL
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:EK-TM4C1294XL 工具/软件:Code Composer Studio
我刚刚发现、我将会称为编译器错误。 或者可能是优化器错误?
我有这个等待循环:
US_DELAY=false; while (!us_DELAY) { }
US_DELAY 在计时器中断例程中设置为 true。
在汇编中、此代码转换为:
MOV R1、#0 strb R1、[R4] ldrb r0、[R4] $C$L1: CMP r0、#0 beq $C$L1
换句话说、us_delay 的读数已放置在循环之外! 循环会一直持续!
在中断处理程序中、R0实际上设置为1、但在离开处理程序时、R0会以某种方式设置回0。 没有明显的指令执行此操作、因此它必须是从处理程序返回的一部分?
-
这是将优化设置为全局的。 如果我完全禁用优化、它将正常运行。
我尚未尝试其他优化设置。