微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > STM32定时器详解 -----影子寄存器,预装寄存器

STM32定时器详解 -----影子寄存器,预装寄存器

时间:11-26 来源:互联网 点击:

中央对齐模式(up/down counting) 在中央对齐模式,计数器从0开始计数到自动加载的值(TIMx_ARR寄存器)−s211,产生一个计数器溢出事件,然后向下计数到1并且产生一个计数器下溢事件;然后再从0开始重新计数。

在此模式下,不能写入TIMx_CR1中的DIR方向位。它由硬件更新并指示当前的计数方向。

可以在每次计数上溢和每次计数下溢时产生更新事件;也可以通过(软件或者使用从模式控制器)设置TIMx_EGR寄存器中的UG位产生更新事件。然后,计数器重新从0开始计数,预分频器也重新从0开始计数。

设置TIMx_CR1寄存器中的UDIS位可以禁止UEV事件。这样可以避免在向预装载寄存器中写入新值时更新影子寄存器。因此UDIS位被清为0之前不会产生更新事件。然而,计数器仍会根据当前自动重加载的值,继续向上或向下计数。 此外,如果设置了TIMx_CR1寄存器中的URS位(选择更新请求) ,设置UG位将产生一个更新事件UEV但不设置UIF标志(因此不产生中断和DMA请求),这是为了避免在发生捕获事件并清除计数器时,同时产生更新和捕获中断。

当发生更新事件时,所有的寄存器都被更新,并且(根据URS位的设置)更新标志位(TIMx_SR寄存器中的UIF位)也被设置。

● 重复计数器被重置为TIMx_RCR寄存器中的内容

● 预分频器的缓存器被加载为预装载(TIMx_PSC寄存器)的值。

● 当前的自动加载寄存器被更新为预装载值(TIMx_ARR寄存器中的内容)。注:如果因为计数器溢出而产生更新,自动重装载将在计数器重载入之前被更新,因此下一个周期将是预期的值(计数器被装载为新的值)。

下面是一些计数器在不同时钟频率下的操作的例子:

内部时钟分频因子为1,TIMx_ARR=0x6时的计数器时序图:

内部时钟分频因子为2时的计数器时序图:

内部时钟分频因子为4,TIMx_ARR=0x36时的计数器时序图:

注:在此无论是中心对齐模式2或3都是在溢出时与UIF标志一起使用

内部时钟分频因子为N,计数器时序图如下:

ARPE=1时的更新事件(计数器下溢),计数器时序图如下:

计数器寄存器各位的描述如下:

位15:0 ARR[15:0]: 自动重装载的值 (Prescaler value)

ARR包含了将要装载入实际的自动重装载寄存器的值。 详细参考数据手册13.3.1节:有关ARR的更新和动作。 当自动重装载的值为空时,计数器不工作。

4.重复计数器

前面解释了计数器上溢/下溢时更新事件(UEV)是如何产生的,然而事实上它只能在重复计数达到0的时候产生。这个特性对产生PWM信号非常有用。

这意味着在每N次计数上溢或下溢时,数据从预装载寄存器传输到影子寄存器(TIMx_ARR自动重载入寄存器,TIMx_PSC预装载寄存器,还有在比较模式下的捕获/比较寄存器TIMx_CCRx),N是TIMx_RCR重复计数寄存器中的值。

重复计数器在下述任一条件成立时递减:

● 向上计数模式下每次计数器溢出时,

● 向下计数模式下每次计数器下溢时,

● 中央对齐模式下每次上溢和每次下溢时。虽然这样限制了PWM的最大循环周期为128,但它能够在每个PWM周期2次更新占空比。在中央对齐模式下,因为波形是对称的,如果每个PWM周期中仅刷新一次比较寄存器,则最大的分辨率为2xTck。

重复计数器是自动加载的,重复速率是由TIMx_RCR寄存器的值定义。当更新事件由软件产生(通过设置TIMx_EGR 中的UG位)或者通过硬件的从模式控制器产生,则无论重复计数器的值是多少,立即发生更新事件,并且TIMx_RCR寄存器中的内容被重载入到重复计数器。

下图为不同模式下更新速率的例子,及TIMx_RCR的寄存器设置

重复计数器各位的描述如下:

位15:8 保留位,始终读为0。

位7:0 REP[7:0]: 重复计数器的值 (Repetition counter value) 开启了预装载功能后,这些位允许用户设置比较寄存器的更新速率(即周期性地从预装载寄存器传输到当前寄存器);如果允许产生更新中断,则会同时影响产生更新中断的速率。

每次向下计数器REP_CNT达到0,会产生一个更新事件并且计数器REP_CNT重新从REP值开始计数。由于REP_CNT只有在周期更新事件U_RC发生时才重载REP值,因此对TIMx_RCR寄存器写入的新值只在下次周期更新事件发生时才起作用。 这意味着在PWM模式中,(REP+1)对应着:

- 在边沿对齐模式下,PWM周期的数目;

- 在中心对称模式下,PWM半周期的数目;

5.控制寄存器1

控制寄存器1各位的描述如下:

位15:10 保留,始终读为0。

位9:8 CKD[1:0]:时钟分频因子 (Clock division)

这2位定义在定时器时钟(CK_INT)频率、死区时间和由死区发生器与数字滤波器(ETR,TIx)所用的采样时钟之间的分频比例。

00:tDTS = tCK_INT

01:tDTS = 2 x tCK_INT

10:tDTS = 4 x tCK_INT

11:保留,不要

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top