一、定时器基础
1.STM32的通用定时器是一个通过可编程预分频器(Prescaler)驱动的16位自动重装主计数器(Counter Period)构成。可以对内部时钟触发源以及外部时钟触发源进行计数。
2.通用定时器的基本工作原理:
定时器时钟信号送入16位可编程预分频器(Prescaler),该预分频器系数在0~65535之间
预分频器溢出后,会向16位的主计数器(Counter Period)发送一个脉冲信号
预分频器,本质上是一个加法计数器,预分频系数实际就是加法计数器的溢出值
3.定时器发生中断的计算方法:
定时时间=(Prescaler+1)*(Counter Period+1)* 1/定时器时钟频率
二、STM32CubeMX配置
1.配置外部时钟源
配置定时器时钟频率72MHZ
pc13引脚输出高电平
2.TIM配置
LED每隔1S闪烁,选择内部时钟,预分频(Prescaler)直接用最大65535,主计数器用999
开启中断-高级定时器
勾选 TIM 1 update interrupt 后的 Enabled
3.保存工程,生成代码
三、Keil代码
1.在main函数添加
HAL_TIM_Base_Start_IT(&htim1); //定时器1使能
2.用户编辑代码区,编写回调函数
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) { if(htim->Instance == htim1.Instance) {HAL_GPIO_TogglePin(GPIOC,GPIO_PIN_13);} }