STM32定时器自学笔记
扫描二维码
随时随地手机看文章
看STM32定时器一个多星期,真是乱啊。各种模式的说。这也主要是我们对定时器的各种模式的应用不是很了解。而我们对定时器的基础部分则是上手很快。就是定时器定时完成后的更新事件中断。捕获,比较这些还说得过去,再后来的从模式、触发、霍尔传感器和编码器等直接就乱了,更不用说高级定时器中的刹车、死区、互补等。
而我看定时器则是看了通用定时器,主要是刹车,编码器等这些对于我来说应用得少,即使哪天用到了也忘了。看了通用定时器不少于4次。总算能够理理清楚了。以下慢慢说。
通用定时器有以下一些模式:
计数模式(向上计数,向下计数,中央对齐计数)
捕获比较模式: (捕获)1、输入捕获模式
2、PWM输入模式
(比较)1、强制输出模式
2、比较输出模式
3、PWM模式
4、单脉冲模式
编码器模式
从模式 1、复位模式
2、门控模式
3、触发模式
4、外部时钟模式+触发模式
主模式
时钟: 1、内部时钟
2、外部时钟1
2、外部时钟2
这里只为了更好的理解,而更多的细节还得参照数据手册,并且定时器确实看一次有一次新的认识,所以不确定完全正确。
首先在定时器给定的内部图中可以看出所有模式的对应关系,当对定时器有一定了解时可以更加清楚的认识该图。
为了不杂乱无章,我们只分析一下图。
图中有阴影的部分都是有一影子寄存器的,并且是可使能的。而在PWM模式中影子寄存器是必须打开的。
再看图的左边分别为TIMX_ETR,TIMX_CH1,TIMX_CH2...这些引脚分别为输入引脚,而TIMX_ETR为触发引脚,暂时不管它们是做什么的,再看右边的TIMX_CH1这些分别为比较输出引脚。
一般在数据手册的时钟向后就开始乱了,定时器有三种时钟(书中写了四种,其实第四种就是第二种内的一种),可看图上方一矩形,内有“触发控制器,从模式控制器,编码器”。
1、可以看到内部时钟(CK_INT)连接到此矩形上。
2、外部触发引脚TIMX_ETR引脚经过滤波等处理形成ETRF信号也连接到此(由它可提供外部时钟模式2所说的时钟,同时它可以触发的作用)
3、再看ITR0,ITR1等信号也连接到此矩形中,这些信号为其它定时器输出的信号。(这也是手册中所讲使用一个定时器作为另一个定时器的预分频,那么驱动此定时器的定时器为主定时器,必须配置TIMX_CR2中的MMS位来确定它输出什么样的信号给从定时器。通过设置TIMX_SMCR中的TS位来选择哪个定时器来驱动当前定时器)
4、而TIMX_CH1~CH4也可以配置为触发输入引脚,也可以为定时器来提供时钟。
在TIMX_SMCR(从模式控制寄存器)中SMS中设置为000(关闭从模式)则使能定时器时时钟则由内部时钟提供。当配置了SMS位为非零值,并且在TS位中选择了输入引脚,并且使能了相关的时钟则会使用该引脚上的某个边沿或者某个电平来驱动计数器计数,而外部时钟2则只能由ETR来提供时钟,外部时钟1也可以由ETR来提供,或者其它引脚提供。
而这除内部时钟外,其它连接到从模式控制器的引脚(编码器不清楚,没有看,以下所写和它无关)不但可以提供时钟外,也可以产生相应的事件,如关闭时钟模式2和不选中时钟模式1的情况下,外部触发引脚(其它输入引脚也可以)还可以复位计数器、启动计数器等。
而CH1~CH4则可以控制从模式,同时它可以作为一个捕获信号的输入,此时可以关闭从模式,或者开启从模式中的时钟模式1输入的信号会使当前的计数器的值保存到CCR寄存器中。
输出CH1~CH4则通过设置CCR寄存器的值则是输出所设定的电平。当定时器设置为主模式时输出的0CXREF将在内部输出到从模式定时器中,从模式定时器将产生SMCR中SMS所设置的事件。
讲了这么多,自己都乱了。总而方之就是输入的引脚一般都工作为从模式,即定时器的计数器由这些引脚来绝定计数或者停止的。(我个人理解)
这些引脚可以为使内部定时器根据外部引脚的某个极性计数,即外部时钟模式。
这些引脚输入的信号可以使内部计数器复位、开启、关闭等。
这些引脚可以是外部提供,也可以是内部其它定时器的某个事件产生的输出或者比较输出来驱动当前定时器。