一。 定时器简介
![]()
二。基本定时器
简介:TIM6和TIM7:16位计数器,只能采用向上计数,没有外部GPIO,属于内部资源,不能对外输出信号,时钟来源于PCLK1,即为挂在APB1下。
定时器时钟频率:
![]()
由上图可以看出,因为APB1总线分频因子为4≠1,因此TIM6和TIM7时钟频率=42✖2MHz=84MHz.
时基部分:
![]()
时基部分包含三个寄存器:预分频寄存器,自动重载寄存器(ARR),计数器。
计数器的时钟-CK_CNT=定时器内部时钟(TIM6=TIM7=84MHz)/(PSC+1)。这也就是说,每计数一次的时间T1=1/CK_CNT。如果ARR(自动重载计数器)中的值为NUM,总的计数时间=T1(NUM+1)。如果使能了中断,自动重载寄存器中的值*T1即为中断的周期,即一次中断之后到下一次中断的时间。并且在中断事件生成时,计时器清零,重新开始计数*
影子寄存器:起缓冲作用。上图中PSC寄存器和ARR寄存器都有一个影子,代表他们都有一个影子寄存器。如果使用影子寄存器:用户值-》寄存器-》影子寄存器-》起作用,如果不适用影子寄存器,则这个用户值进入寄存器就立马起作用,使用影子寄存器后,这个用户值只有在产生中断后下一次计数时才开始起作用。
TIM6,TIM7的时基初始化结构体:
typedef struct
{
unit16_t TIM_Prescaler; //设置分频系数(PSC)
unit16_t TIM_CouterMode ; //计数模式,基本定时器默认向上计数
unit32_t TIM_Period; //重载值(ARR)
unit16_t TIM_ClockDivision; //外部输入时钟分频因子,基本定时器没有
unit8_t TIM_PepetionCounter; //重复计数器,基本定时器没有,高级定时器独有
}TIM_TimeBaseInitTypeDef