工具/软件:Code Composer Studio
男士、
我有以下小函数:
/* 保持程序执行直到* 毫秒的时间结束。 */ void SystemUtilitiesDelayms (uint32_t delayms) { uint32_t时限; timelimit = systemUtilities.systemElapsedMS + delayms; while (timelimit > systemUtilities.systemElapsedMS); }
在 计时器中断上、元素 systemUtilities.systemElapsedMS 在其他位置增加。
尽管时间限制小于.systemElapsedMS、代码仍会在 while ()循环中卡住。 我认为问题是由于函数的优化、这会生成一个用于比较两个寄存器的汇编代码:
由于其他地方的间接访问、我无法使结构变得易失性。
我是否应该"实用"该功能、使其不会得到优化? 还有其他方法吗?
谢谢!
布鲁诺