小编meg*_*gle的帖子

为n个cpu周期添加延迟/什么都不做的最佳方法

我需要在n个CPU周期的代码中添加一个延迟(~30).我目前的解决方案是下面的解决方案,但有效但不是很优雅.

此外,必须在编译时知道延迟.我可以使用它,但如果我可以在运行时更改延迟,那将是理想的.(如果有一些开销可以,但我需要1个周期的分辨率.)

我没有任何外围定时器,我可以使用,所以它需要是一个软件解决方案.

do_something();
#define NUMBER_OF_NOPS   (SOME_DELAY + 3)
#include "nops.h"
#undef NUMBER_OF_NOPS
do_the_next_thing();
Run Code Online (Sandbox Code Playgroud)

nops.h:

#if NUMBER_OF_NOPS > 0
    __ASM volatile ("nop");
#endif
#if NUMBER_OF_NOPS > 1
    __ASM volatile ("nop");
#endif
#if NUMBER_OF_NOPS > 2
    __ASM volatile ("nop");
#endif
...
Run Code Online (Sandbox Code Playgroud)

c embedded arm stm32 stm32f0

5
推荐指数
1
解决办法
1091
查看次数

标签 统计

arm ×1

c ×1

embedded ×1

stm32 ×1

stm32f0 ×1