stm32滴答定时器延时
时间: 2023-07-07 14:05:37 AIGC 浏览: 253
在STM32中,可以使用滴答定时器(SysTick)来进行延时操作。滴答定时器是一个24位的计数器,它可以以系统时钟频率(通常为CPU时钟频率)自动递减,当计数器减至零时,会触发一个中断。因此,我们可以利用这个中断来实现延时功能。
下面是一个简单的示例代码,实现了延时1秒的功能:
```c
#include "stm32f1xx_hal.h"
void delay_ms(uint32_t ms)
{
uint32_t tickstart = HAL_GetTick();
while ((HAL_GetTick() - tickstart) < ms);
}
int main(void)
{
HAL_Init();
while (1)
{
// 延时1秒
delay_ms(1000);
}
}
```
在上面的代码中,我们定义了一个`delay_ms`函数,它利用`HAL_GetTick()`函数获取当前系统运行时间,并循环等待直到时间达到指定的延时时间。
需要注意的是,滴答定时器的计数周期是24位的,因此最大的延时时间为约49天。如果需要更长的延时时间,可以在延时函数中多次调用`delay_ms`函数来实现。
阅读全文
相关推荐



