STM32定时器定时1秒钟的代码
时间: 2024-04-29 07:22:16 浏览: 18
下面是 STM32 定时器定时 1 秒的代码,以 TIM2 为例:
```c
#include "stm32f10x.h"
void TIM2_Init(void)
{
TIM_TimeBaseInitTypeDef TIM_InitStruct;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
TIM_InitStruct.TIM_Prescaler = 7199; // 时钟预分频值
TIM_InitStruct.TIM_CounterMode = TIM_CounterMode_Up; // 计数器向上计数模式
TIM_InitStruct.TIM_Period = 999; // 自动重载寄存器的值
TIM_InitStruct.TIM_ClockDivision = TIM_CKD_DIV1; // 不分频
TIM_TimeBaseInit(TIM2, &TIM_InitStruct);
TIM_Cmd(TIM2, ENABLE); // 启动计数器
}
int main(void)
{
TIM2_Init();
while (1) {
if (TIM_GetFlagStatus(TIM2, TIM_FLAG_Update) == SET) { // 计时时间到达
TIM_ClearFlag(TIM2, TIM_FLAG_Update); // 清除计时溢出标志位
// 执行1秒钟的程序操作
}
}
}
```
在该例子中,我们使用了 STM32 的 TIM2 定时器,计时 1 秒钟。主要的配置参数包括:
- 时钟预分频值:预分频值为 7199,表示计数器每秒钟计数 7200 次;
- 计数器向上计数模式:即计数器从 0 开始计数,计数到自动重载寄存器的值后再从 0 开始重新计数;
- 自动重载寄存器的值:自动重载寄存器的值为 999,表示计数器每计数到 999 就会溢出,计时时间为 1 秒钟;
- 不分频:CKD 分频系数为 1,即不分频。
在主函数中,我们不断检查 TIM2 的溢出标志位,直到计时时间到达,就执行 1 秒钟的程序操作,并清除计时溢出标志位。
相关推荐
![7z](https://img-home.csdnimg.cn/images/20210720083312.png)
![7z](https://img-home.csdnimg.cn/images/20210720083312.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)