高级定时器(TIM1/TIM8)和通用定时器在基本定时器的基础上引入了外部引脚,可以实现输入捕获和输出比较功能。高级定时器比通用定时器增加了可编程死区互补输出、重复计数器、带刹车功能,这些功能都是针对工业电机控制应用的。
高级定时器的时基单元包含一个16位自动重装载寄存器ARR,一个16位的计数器CNT,可向上/向下计数,一个16位可编程预分频器PSC,预分频器的时钟源有多种选择,有内部的时钟、外部的时钟,还有一个8位的重复计数器RCR,这样最高可实现40位的可编程定时。
高级定时器框图
时基单元
自动装载寄存器是预先装载的,写或读自动重装载寄存器将访问预装载寄存器。根据在TIMx_CR1寄存器中的自动装载预装载使能位(ARPE)的设置,预装载寄存器的内容被立即或在每次的更新事件UEV时传送到影子寄存器。当计数器达到溢出条件(向下计数时的下溢条件)并当
TIMx_CR1寄存器中的UDIS位等于0时,产生更新事件。更新事件也可以由软件产生。随后会详细描述每一种配置下更新事件的产生。
计数器由预分频器的时钟输出CK_CNT驱动,仅当设置了计数器TIMx_CR1寄存器中的计数器使能位(CEN)时,CK_CNT才有效。
注意,在设置了TIMx_CR寄存器的CEN位的一个时钟周期后,计数器开始计数。
预分频器描述
预分频器可以将计数器的时钟频率按1到65536之间的任意值分频。它是基于一个(在TIMx_PSC寄存器中的)16位寄存器控制的16位计数器。因为这个控制寄存器带有缓冲器,它能够在运行时被改变。新的预分频器的参数在下一次更新事件到来时被采用。
当预分频器的参数从1变到2时,计数器的时序图
当预分频器的参数从1变到4时,计数器的时序图
计数模式
递增计数模式
计数器从0开始计数,每来一个CK_CNT脉冲计数器就增加1,直到计数器的值与自动重装载寄存器的值相等,然后计数器又从0开始计数并生成计数器上溢事件,计数器总是如此循环计数。如果禁用重复计数器,计数器生成上溢事件就马上生成更新事件;如果使能了重复计数器,每生成一次上溢事件,重复计数器就会减1,直到重复计数器内容为0时才会产生更新事件。
递减计数模式
计数器从自动重装载寄存器ARR值开始计数,每来一个CK_CNT脉冲计数器就减1,直到计数器的值减为0,然后计数器又从自动重装载寄存器ARR值开始递减并生成定时器下溢事件,计数器总能如此反复循环计数。如果禁用重复计数器,计数器生成下溢事件就马上生成更新事件;如果使能了重复计数器,每生成一次下溢事件,重复计数器就会减1,直到重复计数器内容为0时才会产生更新事件。
中央对齐模式
计数器从0开始递增计数,直到计数器计数器等于(ARR-1)值,生成计数器上溢事件,然后又从ARR的值开始递减计数直到1,生成计数器下溢事件。然后又从0开始计数,如此循环。每次发生定时器上溢事件和下溢事件都会产生更新事件。
重复计数器
在每N次计数上溢或下溢时,数据从预装载寄存器传输到影子寄存器(TIMx_ARR自动重 载 入 寄 存 器 , TIMx_PSC 预 装 载 寄 存 器 , 还 有 在 比 较 模 式 下 的 捕 获 / 比 较 寄 存 器TIMx_CCRx),N是TIMx_RCR重复计数寄存器中的值。
不同模式下更新速率的例子,及TIMx_RCR的寄存器设置
时钟选择
外部时钟源模式1
例如,要配置向上计数器在T12输入端的上升沿计数,使用下列步骤:
配置TIMx_CCMR1寄存器CC2S=01,配置通道2检测TI2输入的上升沿
配置TIMx_CCMR1寄存器的IC2F[3:0],选择输入滤波器带宽(如果不需要滤波器,保持IC2F=0000)
配置TIMx_CCER寄存器的CC2P=0,选定上升沿极性
配置TIMx_SMCR寄存器的SMS=111,选择定时器外部时钟模式1
配置TIMx_SMCR寄存器中的TS=110,选定TI2作为触发输入源
设置TIMx_CR1寄存器的CEN=1,启动计数器
注:
捕获预分频器不用作触发,所以不需要对它进行配置
当上升沿出现在TI2,计数器计数一次,且TIF标志被设置。
在TI2的上升沿和计数器实际时钟之间的延时,取决于在TI2输入端的重 新同步电路。
外部时钟模式1下的控制电路
**
外部时钟源模式2
外部触发输入框图
例如,要配置在ETR下每2个上升沿计数一次的向上计数器,使用下列步骤:
本例中不需要滤波器,置TIMx_SMCR寄存器中的ETF[3:0]=0000
设置预分频器,置TIMx_SMCR寄存器中的ETPS[1:0]=01
选择ETR的上升沿检测,置TIMx_SMCR寄存器中的ETP=0
开启外部时钟模式2,写TIMx_SMCR寄存器中的ECE=1
启动计数器,写TIMx_CR1寄存器中的CEN=1
计数器在每2个ETR上升沿计数一次。
在ETR的上升沿和计数器实际时钟之间的延时取决于在ETRP信号端的重新同步电路。
外部时钟模式2下的控制电路
若有概念上的错误,欢迎在下方评论区指正!