定时器溢出时间计算:
Tout(溢出时间)=(ARR+1)(PSC+1)/Tclk
ARR:自动重装载寄存器,用于装载计数器
PSC:PSC预分频器(分频范围1~65535)
Tclk:外设时钟周期
定时器配置步骤
1定时器时钟使能
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);
2.初始化定时器
1.定义定时器结构体
TIM_TimeBaseInitTypeDefTIM_TimeBaseStructure;
2.设置自动重装载值
TIM_TimeBaseStructure.TIM_Period = 自动重载值;
3.设置预分频系数
TIM_TimeBaseStructure.TIM_Prescaler = 预分频系数;
4.设置计算模式
TIM_TimeBaseInitStructure.TIM_CounterMode=TIM_CounterMode_Up;
设置分频模式
TIM_TimeBaseStructInit.TIM_ClockDivision = TIM_CKD_DIV1;
5.设置时钟分频因子(普通定时器无需配置)
6.初始化定时器
TIM_TimeBaseInit(定时器,&TIM_TimeBaseInitStructure);//初始化TIM3
7.允许定时器更新中断
TIM_ITConfig(定时器,TIM_IT_Update,ENABLE);
8.使能定时器
TIM_Cmd(定时器,ENABLE);
3.配置定时器中断
详见STM32F4中断配置
4.编写定时器中断函数
void 定时器_IRQHandler(void)
{
if(TIM_GetITStatus(定时器,TIM_IT_Update)==SET) //溢出中断
{
}
TIM_ClearITPendingBit(定时器,TIM_IT_Update); //清除中断标志位
}