缩写一个硬件延时函数:delay (uint32 ms),参数为需要的延时的毫秒数,调用实现任意毫秒延时
时间: 2024-02-21 15:01:11 浏览: 112
好的,我可以帮你缩写一个硬件延时函数。在这个函数中,我们可以利用系统滴答定时器 SysTick 来实现任意毫秒延时。以下是代码实现:
```c
void delay(uint32_t ms)
{
uint32_t tickstart = HAL_GetTick(); // 获取当前系统滴答定时器的计数值
while ((HAL_GetTick() - tickstart) < ms); // 等待时间到达指定毫秒数
}
```
在这个函数中,我们首先获取当前系统滴答定时器的计数值,然后利用 while 循环等待时间到达指定毫秒数。在每次循环中,我们都会检查当前系统滴答定时器的计数值是否已经超过了指定的毫秒数,如果已经超过了,就跳出循环,结束延时操作。
需要注意的是,当使用这个函数时,需要先开启系统滴答定时器,否则 HAL_GetTick() 函数将无法正常工作。你可以在主函数中调用 HAL_InitTick() 函数来开启系统滴答定时器。