STM32 HAL库自己写个延时函数,不用HAL_Delay()
时间: 2024-06-19 20:02:21 浏览: 178
STM32 HAL 库延时函数 HAL_Delay 解析
5星 · 资源好评率100%
可以使用系统滴答定时器(SysTick)实现延时函数。SysTick是一个24位向下计数器,每次减1,当减到0时会产生一个中断,通过中断服务函数可以实现延时操作。以下是一个使用SysTick实现的延时函数:
```
void delay_ms(uint32_t nms)
{
uint32_t ticks = nms * (SystemCoreClock / 1000 / 8);
SysTick->LOAD = ticks;
SysTick->VAL = 0;
SysTick->CTRL = SysTick_CTRL_ENABLE_Msk | SysTick_CTRL_CLKSOURCE_Msk;
while(!(SysTick->CTRL & SysTick_CTRL_COUNTFLAG_Msk));
}
```
这个函数的参数是需要延时的毫秒数。在函数内部,首先计算出需要的滴答定时器的计数值,然后将其加载到LOAD寄存器中。接着将VAL寄存器清零,使滴答定时器立即开始倒计时。最后,使能滴答定时器,并等待滴答定时器计数完成。
阅读全文