【Nations MCU 】定时器的基础学习

一、定时器简介

时器功能 :定时、输出比较、输入捕获、断路输入
定时器分类 :基本定时器、通用定时器、高级定时器
定时器资源 : N32G455 系列有两个基本定时器( TIM6 、 TIM7 ),四个通用定时器( TIM2 、TIM3 、 TIM4 、 TIM5 ),两个高级定时器( TIM1 和 TIM8 )高级定时器、通用定时器、基本定时器,这三个定时器成上下级的关系,即基本定时器有的功能通用定时器都有,而且还增加了向下、向上/向下计数器、PWM生成、输出比较、输入捕获等等功能;而高级定时器又包含了通用定时器的所有功能,另外还增加了死区互补输出、刹车信号、加入重复计数器等等。  

高级控制定时器(TIM1 和 TIM8)由一个 16 位的自动装载计数器、一个可编程的重复计数器和一个可编程 预分频计数器组成。通用定时器是由一个 16 位的自动装载计数器和一个可编程预分频计数器组成。基本定时器(TIM6,TIM7)各包含一个 16 位自动装载计数器,由各自的可编程预分频进行驱动。

二、基本定时器

(1) 功能简介

①计数器16bit,只能向上计数,只有TIM6和TIM7

②没有外部的GPIO,是内部资源,只能用来定时

③时钟来自 PCLK1 ,为72M ,可实现1~65536分频

(2) 定时器功能框图讲解

               

1 时钟源

计数器的时钟源由内部时钟( CK_INT )提供。TIMx_CTRL1 寄存器的 CNTEN 位和 TIMx_EVTGEN 寄存器的 UDGN 位是实际的控制位,(除了 UDGN 位被自动清除外)只能通过软件改变它们。当 CNTEN 位为’1’,内部时钟即向预分频器提供时钟。

2 控制器

控制器用于控制定时器的:复位、使能、计数、触发 DAC

3 时基单元(定时器的心脏)

①计数器寄存器( TIMx_CNT )

 预分频寄存器(TIMx_PSC ) 
由于 TIMx_PSC 控制寄存器具有缓冲功能,可以在运行过程中改变它的数值,新的预分频数值将在下一个更新事件时起作用。16 位的预分频器 PSC 对内部时钟 CK_PSC 进行分频之后,得到计数器时钟:CK_CNT = CK_PSC / (PSC+1)

③自动重装载寄存器( TIMx_AR )

如果自动重装载数值为0,则计数器停止。

计数器从 0 累加计数到自动重装载数值( TIMx_AR 寄存器),然后产生一个计数器溢出事件并重新从 0 开始计数。每次计数器溢出时可以产生更新事件;(通过软件或使用从模式控制器)设置 TIMx_EVTGEN 寄存器的 UDGN 位也可以产生更新事件。


三、通用定时器

(1) 功能简介

①计数器 16bit ,上/下/两边计数, TIM2 、 TIM3 、 TIM4 、TIM5

②有4个 GPIO

③时钟来自 PCLK2 ,为 72M ,可实现1~65536分频

(2) 定时器功能框图讲解
           

1 时钟源

内部时钟( CK_INT )
外部时钟模式 1:外部输入脚( Tix ) 
外部时钟模式 2:外部触发输入( ETR ) 
内部触发输入( ITRx ):使用一个定时器作为另一个定时器的预分频器

2
 控制器

触发控制器用来针对片内外设输出触发信号,比如为其它定时器提供时钟和触发DAC/ADC 转换。编码器接口专门针对编码器计数而设计。从模式控制器可以控制计数器复位、使能、向上/向下、计数、触发 DAC。

3 时基
预分频器寄存器( TIMx_PSC ) 
计数器寄存器( TIMx_CNT ) 
自动装载寄存器 ( TIMx_AR )

4 输入捕获

输入捕获可以对输入的信号的上升沿,下降沿或者双边沿进行捕获,常用的有测量输入信号的脉宽和测量 PWM 输入信号的频率和占空比这两种。

输入捕获的大概的原理就是,当捕获到信号的跳变沿的时候,把计数器 CNT 的值锁存到捕获寄存器 CCR 中,把前后两次捕获到的 CCR 寄存器中的值相减,就可以算出脉宽或者频率。如果捕获的脉宽的时间长度超过你的捕获定时器的周期,就会发生溢出,这个我们需要做额外的处理。

5 输出比较

输出比较就是通过定时器的外部引脚对外输出控制信号,有冻结、将通道设置为匹配时输出有效电平、将通道 X 设置为匹配时输出无效电平、翻转、强制变为无效电平、强制变为有效电平、 PWM1 和 PWM2 这八种模式,具体使用哪种模式由寄存器 CCMRx 的位 OCxM [2:0]配置。其中 PWM 模式是输出比较中的特例,使用的也最多。


四、高级定时器

(1) 功能简介

①计数器 16bit ,上/下/两边计数, TIM1 和 TIM8 ,还有一个重复计数器 RCR 

②有4个 GPIO ,其中通道 1~3 还有互补输出 GPIO

③时钟来自 PCLK2 ,为 72M ,可实现 1~65536 分频

(2) 定时器功能框图讲解

             

1 时钟源

内部时钟( CK_INT ) 

外部时钟模式 1:外部输入引脚

外部时钟模式 2:外部触发输入 ETR

内部触发输入( ITRx ):使用一个定时器作为另一个定时器的预分频器

2 控制器

触发控制器用来针对片内外设输出触发信号,比如为其它定时器提供时钟和触发DAC/ADC转换。编码器接口专门针对编码器计数而设计。从模式控制器可以控制计数器复位、使能、向上/向下、计数、触发 DAC。

3 时基

预分频器寄存器( TIMx_PSC ) 

计数器寄存器( TIMx_CNT ) 

自动装载寄存器( TIMx_AR ) 

重复次数寄存器( TIMx_REPCNT )

4 输入捕获

输入捕获可以对输入的信号的上升沿,下降沿或者双边沿进行捕获,常用的有测量
测量输入信号的脉宽和测量 PWM 输入信号的频率和占空比这两种。
输入捕获的大概的原理就是,当捕获到信号的跳变沿的时候,把计数器 CNT 的值
值锁存到捕获寄存器 CCR 中,把前后两次捕获到的  CCR 寄存器中的值相减,就可以算出脉宽或者频率。 如果捕获的脉宽的时间长度超过你的捕获定时器的周期, 就会发生溢出,这个我们需要做额外的处理。

5 输出比较

输出比较就是通过定时器的外部引脚对外输出控制信号,有冻结、将通道设置为匹配时输出有效电平、将通道 X 设置为匹配时输出无效电平、翻转、强制变为无效电平、强制变为有效电平、 PWM1 和 PWM2 这八种模式,具体使用哪种模式由寄存器 CCMRx  的位 OCxM [2:0]配置。其中 PWM 模式是输出比较中的特例,使用的也最多。

6 断路功能

断路功能就是电机控制的刹车功能,使能断路功能时,根据相关控制位状态修改输出信号电平。在任何情况下, OCx 和 OCxN 输出都不能同时为有效电平,这关系到电机控制常用的 H 桥电路结构原因。


五、
总结                                                                                                         

定时器是基于单片机的嵌入式应用中的基本模块。定时器作为外设,可生成周期性事件,用于测量时间间隔、生成延迟和产生超时。定时器还可用于其他应用场景,如生成 PWM 输出和捕捉输入等。例如使 LED 每两秒闪烁一次,使用定时器在指定时间产生中断,与此同时, CPU可以执行其他有意义的任务,或者可以在该时间段内休眠以节省功耗。如果没有定时器,则应用需要连续检查经过的时间,在应用定期检查经过的时间时, CPU 并未执行任何有意义的任务,在此过程中会浪费宝贵的 CPU 带宽。

此文章主要讲常规定时器的功能区分。

六、Reference

[1] 哔哩哔哩_Cancer_磊_33-TIM-高级定时器

[2] UM_N32G45x系列用户手册V1.1.2

[3] STM32_Timer_Training_Microchip微芯_电子发烧友

技术文档

类型标题档案
简易操作手册User Manual

★博文内容均由个人提供,与平台无关,如有违法或侵权,请与网站管理员联系。

★文明上网,请理性发言。内容一周内被举报5次,发文人进小黑屋喔~

评论