Untitled

写在前面:

    本章将了解定时器的基本功能及其配置方法,介绍在cubeMX中如何对中断进行设置,如何开启中断以及配置中断的优先级等,最后将实现由定时器触发的定时器中断,控制LED灯的闪烁。 

1.知识要点

1.1定时器的概念

    定时器的基本功能是计时功能,如同闹铃一般,设定好对应的时间后,会在设定的时刻响起铃声。如果设定为1ms的定时时间,便每隔1ms引起中断函数。
    在使用定时器时,会涉及到三个非常重要的概念——分频,计数,重载。这三个概念可以结合生活中使用的时钟来理解。

①分频:时钟上不同的指针需要有不同的速度,也就是不同的频率,从而精确的表示时间, 比如秒针,分针,时针,这三者相邻的频率之比都是60:1,即秒针每转过60格分针转动1格,分针转动60格时针转动1格,所以分针对于秒针的分频为60。 ②计数:时钟所对应的值都是与工作时间成正比的,比如秒针转动10格,意味着过了10 秒,同样定时器中的计数也是和计数时间成正比的值,频率越高增长速度越快。 ③重载:时、分、秒的刻度都是有上限的,一个表盘最多记12小时,60分钟,60秒, 如果继续增加的话就会回到0。同样的在定时器中也需要重载,当定时器中的计数值达到重载值时,计数值就会被清零。

1.2 STM32定时器的原理

下面详细介绍定时器的工作流程:以下是定时器依赖的三个寄存器

TIMx_PSC :预分频寄存器

TIMx_CNT :计数器寄存器

TIMx_ARR :自动重装寄存器

(1)分频

    时钟源处的时钟信号经过预分频寄存器,按照预分频寄存器内部的值进行分频。比如时钟源的频率为168MHz,而预分频寄存器(Psc)中设置的值为168:1,那么通过预分频后进入定时器的时钟频率就下降到了1MHz。 

(2)计数与重载

    在已经分频后的定时器时钟驱使下,TIMx_CNT根据该时钟的频率以一定的方式计数。若定时器向上计数,则直到TIMx_CNT的值增长到与设定的自动重装载寄存器TIMx_ARR相等时,TIMx_CNT被清空,并重新从0开始向上计数,TIMx_CNT增长到TIMx_ARR中的值后被清空时产生一个定时中断触发信号。综上定时器触发中断的时间是由设定的TIMx_PSC中的分频比和TIMx_ARR中的自动重装载值共同决定的。

    通用定时器可以向上计数、向下计数、向上向下双向计数模式。

   ①向上计数模式:计数器从0计数到自动加载值(TIMx_ARR),然后重新从0开始计数并且产生一个计数器溢出事件。
   ②向下计数模式:计数器从自动装入的值(TIMx_ARR)开始向下计数到0,然后从自动装入的值重新开始,并产生一个计数器向下溢出事件。
   ③中央对齐模式(向上/向下计数):计数器从0开始计数到自动装入的值-1,产生一个计数器溢出事件,然后向下计数到1并且产生一个计数器溢出事件;然后再从0开始重新计数。

   简单地理解三种计数模式,可以通过下面的图形:

Untitled