TIM(Timer)定时器
根据复杂度和应用场景分为了高级定时器、通用定时器、基本定时器三种类型
定时中断基本结构图
预分频器(PSC)时序
- 计数器计数频率:CK_CNT = CK_PSC / (PSC + 1)
CNT_EN:计数器使能,高电平计数器正常运行,低电平计数器停止
CK_CNT:在上图的时序中,开始时计数器未使能,计数器时钟不运行。使能后,前半段预分频器系数为1,计数器的时钟等于预分频器前的时钟。后半段,预分频器系数变为2,计数器的时钟就也变为预分频器前时钟的一半。
计数器寄存器:在计数器时钟的驱动下,计数器寄存器也跟随时钟的上升沿不断自增。在这里可以推断出ARR自动重装值就是FC。当计数值计到和重装值相等,并且下一个时钟来临时,计数值才清零。同时产生一个更新事件。
计数器(CNT)时序
- 计数器溢出频率:
=CK_CNT_OV = CK_CNT / (ARR + 1)
= CK_PSC / (PSC + 1) / (ARR + 1)
图中所指的内部时钟分频因子为2,就是分频系数为2
CK_INT:内部时钟72MHz
CNT_EN:时钟使能,高电平启动
CK_CNT:因为分频系数为2,所以这个的频率是上面CK_INT的频率除2。计数器在这个时钟每个上升沿自增,当增到0036的时候,发生溢出,然后产生一个上升沿,计数器清零。计数器溢出后,产生一个更新事件脉冲。并置一个更新中断标志位UIF,当这个标志位置1后,就会申请中断。中断响应后,需要在中断程序中手动清零。