stm32 hal delay
时间: 2023-10-01 07:02:53 浏览: 217
STM32 HAL库 DHT11驱动
STM32 HAL库中的延时函数是HAL_Delay()。这个函数使用了系统滴答定时器来提供最小的延时。在函数内部,首先获取当前的系统滴答计数值,然后根据指定的延时时间进行循环等待,直到满足延时条件。如果延时时间小于最大延时值HAL_MAX_DELAY,函数会添加一个频率值以确保最小的延时等待。
除了HAL_Delay()函数之外,用户也可以自己编写延时函数。例如,可以编写一个ms_Delay()函数,参数为要延时的毫秒数,函数内部使用一个计数器进行循环延时。
在某些情况下,HAL_Delay()函数可能会被阻塞,导致程序卡死。例如,当外部中断处理函数中调用了HAL_Delay()函数来消除按键抖动时,如果外部中断的优先级高于系统滴答定时器,那么系统滴答定时器会被中断打断,从而导致HAL_Delay()函数无法正常运行,最终导致程序卡死。
阅读全文