1.定时器介绍
(1)定时器1-14所挂载的时钟树
(2)定时器发生中断时间的计算方法
定时器时间=(Prescaler+1)X(Counter Period+1)/定时器时钟频率 单位:秒/s
Prescaler 预分频器
Counter Period 自动重装载寄存器
示例:定时器6 定时0.5s计算方法
时钟配置如下图,可以看到APB1总线时钟频率为42M,定时器频率为84MHz.
配置Prescaler为8400-1,Counter Period为5000-1,可以得到0.5s的计时时间
2.具体配置
(1)配置定时器6
配置Prescaler为8400-1,Counter Period为5000-1,可以得到0.5s的计时时间,使能自动重装载。
使能定时器中断
3.代码编写
(1) 启动定时器中断6
在main函数中添加
HAL_TIM_Base_Start_IT(&htim6);//启动定时器中断6
(2)修改定时器回调函数
右击go to Definition 追溯到这个函数的根源,因为使能了定时器中断,所以要找到接受完成的回调函数,并且在主函数中对它进行重写,这是一个虚函数,如果不进行重写,默认执行这个带有__weak的虚函数。
在 main.c文件中添加代码
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
if(htim->Instance==TIM6) //是否是定时器6触发中断
{
HAL_GPIO_TogglePin(LED0_GPIO_Port,LED0_Pin);//翻转LED0的电平
}
}