stm32定时器毫秒级计时
时间: 2024-09-05 21:00:38 浏览: 67
STM32系列微控制器中的定时器常用于实现精确的时间控制,包括毫秒级计时。其中最常用的是基本定时器(如 TIM1、TIM8等)和高级定时器(如 TIM3、TIM4等)。这里以TIM1举例,使用软件触发的方式实现毫秒级计时:
1. 配置定时器:首先需要配置定时器的工作模式,例如选择定时器模式3,即预分频器+捕获/比较寄存器,然后设置计数初值,使其启动后计数到预定次数对应一定的延时。
```c
TIM_TimeBaseInitTypeDef.TIM_TimeBaseInitStructure.TIM_Period = (uint16_t)(SystemCoreClock / (1000 *.prescaler));
TIM_TimeBaseInit(TIM1, &TIM_TimeBaseInitStructure);
```
这里的`prescaler`是预分频系数,通常设为1000表示将系统时钟分频1000倍,得到1ms时间间隔。
2. 开启定时器:启用定时器并让它自动更新,可以选择使能溢出中断以便于外部处理计时结束。
```c
TIM_Cmd(TIM1, ENABLE);
TIM_ITConfig(TIM1, TIM_IT_Update, ENABLE); // 更新中断使能
NVIC_EnableIRQ(TIM1_IRQn); // 启动中断服务请求
```
3. 模式切换:若需要暂停或继续计时,可以临时禁用定时器(TIM_Cmd(TIM1, DISABLE)),恢复时再开启。
4. 检测溢出:在中断服务函数中检查定时器是否溢出,当溢出发生时,就等于计时到了1ms。
```c
void TIM1_IRQHandler(void)
{
if (ITStatus & TIM_IT_Update)
{
ITStatus &= ~TIM_IT_Update; // 清除中断标志
// 这里可以记录到达时间或执行相应操作
...
}
}
```
阅读全文
相关推荐


















