stm32滴答定时器延时
时间: 2023-07-06 13:05:40 浏览: 113
基本例程-SysTick(系统滴答定时器).rar_STM32l定时器例程_Systick工作原理_stm32 SysTIck例
在STM32中,可以使用滴答定时器(SysTick)作为延时函数的计时器。SysTick定时器是一个24位的计数器,它可以以固定的频率(通常为系统时钟频率)自动递减,并且在计数器值为0时会产生一个中断。我们可以利用这个定时器来编写延时函数。
下面是一个简单的示例代码,实现了一个粗略的ms级延时函数:
```c
#include "stm32f10x.h"
void Delay_ms(uint32_t ms)
{
SysTick->LOAD = SystemCoreClock / 1000 - 1; // 设置定时器每1ms递减
SysTick->VAL = 0; // 清空定时器
SysTick->CTRL = SysTick_CTRL_ENABLE_Msk; // 启动定时器
for(uint32_t i = 0; i < ms; i++)
{
while((SysTick->CTRL & SysTick_CTRL_COUNTFLAG_Msk) == 0); // 等待计数器值为0
}
SysTick->CTRL = 0; // 关闭定时器
}
```
在主函数中调用这个函数即可实现延时。需要注意的是,这个函数只能提供粗略的延时,因为SysTick定时器的计数频率通常很高,而且计数器的精度也受限于系统时钟的精度。如果需要更精确的延时,可以使用其他定时器或者外部时钟源。
阅读全文