很多时候跑空指令的延时看着太小儿科了,或许不够精准。
我看到一个帖子。
https://bbs.21ic.com/icview-3295756-1-1.html
讲述了HAL库的延时函数的实现原理。
然后结合我在Arduino上看到的是延时和计时函数,发现了异曲同工的地方。
void HAL_Delay_us(uint32_t microseconds)
{
uint32_t tickstart = 0;
tickstart = HAL_GetTick();
while ((HAL_GetTick() - tickstart) < (microseconds / 1000));
}
注意到这个函数其实是调用了一个叫做 HAL_GetTick();的函数来实现的,这个就像一个时钟一样,读取时候就是看一下时钟。记下来,然后就一直看着它,当新的时刻大道指定的时间差后就退出,表示到点了。
|