【发布时间】:2014-06-30 00:11:57
【问题描述】:
我正在将一些代码从 M3 移植到 M4,它使用 3 个 NOP 在串行输出时钟更改之间提供非常短的延迟。 M3 指令集将 NOP 的时间定义为 1 个周期。我注意到 M4 中的 NOP 不一定会延迟任何时间。 我知道我需要禁用编译器优化,但我正在寻找一个低级命令,它会给我可靠、可重复的时间。 实际上,在这种特殊情况下,串行的使用非常偶然,并且可能非常慢,但我仍然想知道获得周期级延迟的最佳方法。
【问题讨论】:
-
您无法使用 UART 或外设定时器吗?
-
不,我没有可以及时设置或空闲运行的计时器。
-
uart 有自己的时钟除数。
-
我无法使用 UART 或外设定时器来产生 24ns 延迟。
-
根据ARM Cortex-M3 Devices Generic User Guide,NOP 指令也不一定会在 Cortex M3 上消耗任何时间。
标签: assembly delay cortex-m3 nop