实现微秒延时,可以使用定时器。但这个定时器中断万万不可一直开启。否则频繁地进入中断会影响整体运行效率。可以选择在需要延时的时候开启定时器,延时结束关闭。
更短的延时,只能靠执行空指令来实现了。知道MCU的主频,就可以计算出一个单指令周期耗费的时间。
for(int i = n; i > 0; --i);
类似这样的循环,只要选择恰当的n值,就能完成精确延时。
hal 库没有 us 级别延时,有 HAL_Delay,是毫秒级延时。
hal 库是基于心跳为 1000 的 systick 延时,最小是1ms,可以自己启用timer实现 us 级