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

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

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

其它因素,多个通道的时序关系有可能会混乱,造成是不可预知的结果。

2.预分频寄存器

预分频器可以将计数器的时钟频率按1到65536之间的任意值分频。它是基于一个在TIMx_PSC寄存器中的16位寄存器控制的16位计数器。因为这个控制寄存器带有缓冲器,它能够在运行时被改变。新的预分频器的参数在下一次更新事件到来时被采用。

下面给出了在预分频器运行时,更改计数器参数的例子

当预分频器的参数从1变到2时,计数器的时序图如下:

当预分频器的参数从1变到4时,计数器的时序图如下:

预分频寄存器各位的描述如下:

位15:0 PSC[15:0]:预分频值

计数器的时钟频率(CK_CNT)等于fCK_PSC / (PSC[15:0] + 1)。

PSC的值保存在预分频寄存器的预装载寄存器中,在每次更新事件时加载至影子寄存器.

3.计数器寄存器

高级定时器计数模式:在向上计数模式中,计数器从0计数到自动加载值(TIMx_ARR计数器的内容),然后重新从0开始计数并且产生一个计数器溢出事件。

如果使用了重复计数器功能,在向上计数达到设置的重复计数次数(TIMx_RCR)时,产生更新事件(UEV);否则每次计数器溢出时才产生更新事件。

在事件产生寄存器寄存器中(通过软件方式或者使用从模式控制器)设置UG位也同样可以产生一个更新事件。 设置TIMx_CR1寄存器中的UDIS位,可以禁止更新事件;这样可以避免在向预装载寄存器中写入新值时更新影子寄存器。在UDIS位被清’0’之前,将不产生更新事件。但是在应该产生更新事件时,计数器仍会被清’0’,同时预分频器的计数也被请0(但预分频器的数值不变)。此外,如果设置了TIMx_CR1寄存器中的URS位(选择更新请求),设置UG位将产生一个更新事件UEV,但硬件不设置UIF标志(即不产生中断或DMA请求)。这是为了避免在捕获模式下清除计数器时,同时产生更新和捕获中断。

当发生一个更新事件时,所有的寄存器都被更新,硬件同时(依据URS位)设置更新标志位(TIMx_SR寄存器中的UIF位)。

● 重复计数器被重新加载为TIMx_RCR寄存器的内容。

● 自动装载影子寄存器被重新置入预装载寄存器的值(TIMx_ARR)。

● 预分频器的缓冲区被置入预装载寄存器的值(TIMx_PSC寄存器的内容)。

下面给出一些例子,当TIMx_ARR=0x36时计数器在不同时钟频率下的动作。

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

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

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

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

当ARPE=0时的更新事件(TIMx_ARR没有预装入) 时的计数器时序图如下:

当ARPE=1时的更新事件(TIMx_ARR预装入) 时的计数器时序图如下:

在向下模式中,计数器从自动装入的值(TIMx_ARR计数器的值)开始向下计数到0,然后从自动装入的值重新开始并且产生一个计数器向下溢出事件。

如果使用了重复计数器,当向下计数重复了重复计数寄存器(TIMx_RCR)中设定的次数后,将产生更新事件(UEV),否则每次计数器下溢时才产生更新事件。

在TIMx_EGR寄存器中(通过软件方式或者使用从模式控制器)设置UG位,也同样可以产生一个更新事件。

设置TIMx_CR1寄存器的UDIS位可以禁止UEV事件。这样可以避免向预装载寄存器中写入新值时更新影子寄存器。因此UDIS位被清为0之前不会产生更新事件。然而,计数器仍会从当前自动加载值重新开始计数,并且预分频器的计数器重新从0开始(但预分频系数不变)。

此外,如果设置了TIMx_CR1寄存器中的URS位(选择更新请求) ,设置UG位将产生一个更新事件UEV但不设置UIF标志(因此不产生中断和DMA请求),这是为了避免在发生捕获事件并清除计数器时,同时产生更新和捕获中断。

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

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

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

● 当前的自动加载寄存器被更新为预装载值(TIMx_ARR寄存器中的内容)。

注:自动装载在计数器重载入之前被更新,因此下一个周期将是预期的值。

下面是一些当TIMx_ARR=0x36时,计数器在不同时钟频率下的动作。

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

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

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

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

当没有使用重复计数器时的更新事件时的计数器时序图:

中央对齐模式(up/down counting) 在中央对齐模式,计数器从0开始计数到自动加载的值(TIMx_ARR寄存器)−s211,产生一个计数器溢出事

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

网站地图

Top