19.8STM32定时器的内部结构_第1页
19.8STM32定时器的内部结构_第2页
19.8STM32定时器的内部结构_第3页
19.8STM32定时器的内部结构_第4页
19.8STM32定时器的内部结构_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

STM32定时器的内部结构1STM32程序设计案例教程电子工业出版社欧启标主要内容一、STM32定时器的内部结构图二、定时器输入输出端三、定时器时基单元四、定时器的时钟源五、定时器控制器六、定时器输入捕获和输出比较控制端一、STM32定时器的内部结构图

STM32的定时器的核心是一个计数器,定时器的各种功能都围绕这个计数器进行设计。STM32的这些定时器略有差别,不过如果熟悉了高级定时器或通用定时器中的其中一个的工作原理及应用,则其它的定时器亦能轻松掌握,下面我们就以通用定时器TIM3为例来了解STM32的定时器的工作原理。TIM3的内部结构框图如图9-17所示。图9-17TIM3的结构框图示意图二、定时器输入输出端(图9-17的①)1、TIM3的输入输出端和IO引脚复用TIM3有5个输入输出端,分别是外部触发端ETR和TIMx_CH1~4。其中TIMx_CH1~4既可以是输入也可以是输出,如果某通道配置为输入,则TIMx_CH1~4为待捕获信号的输入端,如果配置为输出,则TIMx_CH1~4为信号输出端。STM32F407的定时器TIM3的输入输出端需要和IO引脚连接在一起,才能让输入信号进入定时器或者让定时器的信号从IO引脚输出。STM32F407ZGT6的输入输出端和IO引脚关系列表如表9-2所示。2、CubeMX中功能引脚的自动设置在CubeMX中,当我们选择好通道的工作方式时,默认的通道引脚会变成亮绿色,表示该引脚已经连接到定时器的输入(输出)端,如图9-18所示。图9-18TIM3的通道1的输入输出引脚在CubeMX中的设置示意图三、定时器的时基单元(图9-17的②)1、TIM3的时基单元时基单元指的是定时器的基本计时单元,它是整个定时器的核心,由3个寄存器构成,一个是计数器CNT,一个是自动重载寄存器ARR,一个是预分频寄存器PSC。TIM3的这3个寄存器都是16位。①计数器。计数器是时基单元的核心,计数方式有3种,如表9-3所示。

计数器的初值由计数方式决定,如果是递增计数和中心对齐模式,则计数器的初值为0;如果是递减计数,计数器的初值为ARR的值。②预分频器用于对CK_PSC信号进行分频,以扩大定时器的定时范围及获取精确的计数时钟,其输出信号CK_CNT为计数器的计数源,CK_PSC和CK_CNT的关系如式(9-1)所示。

CK_CNT=CK_PSC/(PSC+1)(9-1)PSC的值范围为0~65535,所以计数器的预分频系数(PSC+1)在1~65536之间。③自动重载寄存器ARR。ARR存放计数的上限值(向上计数)或起始值(向下计数),用于供计数器与其进行比较以确定计数溢出事件的发生。在周期计数时,ARR决定计数的周期。ARR充当的角色与计数方式、溢出点、重装值的关系如表9-4所示。2、预装载寄存器和影子寄存器需要注意的是,图9-17中,PSC预分频寄存器、ARR重载寄存器和CCR寄存器下面有一个阴影,这个阴影的意思是指这类寄存器在物理上对应两个寄存器,一个是程序员可以写入或者读出的寄存器,称为预装载寄存器(preload),另一个是程序员看不见的,但在实际中真正起作用的寄存器,这个寄存器称为影子寄存器(shadowregister)。

我们以ARR为例,来说明预加载寄存器和影子寄存器的关系。对于ARR,当定时器控制寄存器TIMx_CR1中的ARPE位(bit7)为0时,它的预装载寄存器的内容可以随时传送到影子寄存器,此时两者是连通的;当ARPE位为1时,在每一次更新事件发生时,系统才把它的预装载寄存器的内容传送到影子寄存器。

设计预装载寄存器和影子寄存器的好处是,所有真正需要起作用的寄存器(影子寄存器)可以在同一个时间(发生更新事件时)被更新为所对应的预装载寄存器的内容,这样可以保证多个通道的操作能够准确地同步。如果没有影子寄存器,或者预装载寄存器和影子寄存器是直通的,则软件更新预装载寄存器的值时,同时更新影子寄存器的值,因为软件不可能在一个相同的时刻同时更新多个寄存器,这是会造成多个通道的时序不能同步,如果再加上其它因素(例如中断),多个通道的时序关系有可能是不可预知的。3、PSC、ARR和CCR的值的更新更新意思为更改为新的值。在定时器计数过程中,PSC、ARR和CCRx的值在发生更新事件会被更新,更新事件包括上溢和下溢等。下面我们对这三个寄存器的更新过程进行详细的讨论。(1)PSC的更新图9-19给出了PSC更新时,计数器的时序图。

图9-19中,ARR的值为0xFC,计数器采用向上计数方式,预分频器PSC的值一开始为0。由图可见,当计数器计数到F8时,PSC的预装载寄存器的值更新为3(分频值为4),但是此时预装载寄存器的值并没有装入到影子寄存器中,实际起作用的分频值仍然是1。计数器计数到FC时,该值与ARR中的值相同,计数器清0重新从0开始计数同时发生一个溢出事件。发生溢出事件后,PSC的预装载寄存器的值装入到影子寄存器中,并同时发生作用,可以看到此时预分频器计数器每计数4个输入脉冲信号才输出一个脉冲信号。(2)ARR的更新ARR的更新分为两种情况,一是TIM3_CR1中的ARPE位为0的情况,一种是ARPE位为1的情况。①ARPE=0,这种情况下ARR的预装载寄存器和影子寄存器直接连通,装入ARR的值立即生效。此时ARR的变化和计数器的时序之间的关系如图9-20所示。图9-20中,一开始ARR的值为FF,在计数器计数到32时,往ARR装入36,由图可见,此时的ARR立即生效,计数器计数到36时发生溢出事件。②ARPE=1,这种情况下ARR的预装载寄存器的值只有发生更新事件时才装入影子寄存器。此时ARR的变化和计数器的时序之间的关系如图9-21所示。

图中,ARR的初始值为F5,当计数器计数到F1时,将新值36装入ARR中,注意此时ARR的影子寄存器的值仍然是F5,直到计数器计数到F5发生溢出事件后,预装载寄存器的值才装入影子寄存器中并发生作用。图9-20和图9-21所举例子都为递增计数情况,其他计数模式类似,不再赘述。

(3)CCRx的更新通过将TIMx_CCMRx寄存器中的OCxPE位置1使能CCRx寄存器相应预装载寄存器,在发生更新事件时影子寄存器的值获得更新。预装载功能在多个定时器同时输出信号时比较有用,可以确保多个定时器的输出信号在同一个时刻变化,实现输出同步。如果不涉及输出同步,一般不需要开启预装载功能。4、HAL库中定时器时基参数的封装在应用STM32的定时器时要先配置好定时器的一些基本参数:如PSC、ARR、计数方式和ARR的生效方式等,HAL中将这些参数封装在TIM_Base_InitTypeDef结构体中,该结构体的定义如下:typedefstruct{uint32_tPrescaler;/*定时器的预分频寄存器值,范围0~0xffff*/uint32_tCounterMode;/*计数方式*/uint32_tPeriod;/*定时器的计数周期,也即ARR的值,范围0~0xFFFF*/uint32_tClockDivision;/*设定定时器时钟TIM_CLK的分频值,用于输入信号滤波*/uint32_tRepetitionCounter;

/*重复定时器的值,只针对高级定时器*/uint32_tAutoReloadPreload;

/*设置ARR寄存器是直通还是缓冲*/}TIM_Base_InitTypeDef;

其中,计数方式CounterMode有三种,但由于中心对齐方式中又对计数导致的中断标志的置位有3种可能,所以HAL库中计数方式的值实际有5种,具体如表9-5所示。

自动重载预装载AutoReloadPreload的值只有两种可能,具体如表9-6所示。5、CubeMX中时基单元的设置在CubeMX中与时基设置相关的选项如图9-22所示。图中,一些设置项的含义如下:①预分频值PSC:值在1~65535之间,如果设置为999,则实际的分频系数是1000。②计数模式:计数器的计数方式有5种,参见表9-5。③计数周期(ARR):计数周期由ARR的值决定,对于递增/递减计数,周期为ARR+1。④自动重装载预加载使能项(auto-reloadpreload),设置的是ARPE的值。四、定时器的时钟源(图9-17的③)

STM32F407的定时器的时钟源有以下4大类●内部时钟(CK_INT)●外部时钟模式1:外部输入引脚(TIx)●外部时钟模式2:外部触发输入(ETR),仅适用于TIM2、TIM3和TIM4。●内部触发输入(ITRx):使用一个定时器作为另一个定时器的预分频器,例如可以将定时器1配置为定时器2的预分频器。五、定时器控制器(图9-17的④)

定时器控制器部分包括触发控制器、从模式控制器以及编码器接口。触发控制器用来针对片内外设输出触发信号,比如为其它定时器提供时钟和触发DAC/ADC转换。编码器接口专门针对编码器计数而设计。从模式控制器可以控制计数器复位、启动、递增/递减、计数。六、输入捕获和输出比较控制端(图9-17的⑤、⑥和⑦)

TIM3有4路输入捕获输出比较通道。其中捕获通道可以用于对输入的信号的上升沿,下降沿或者双边沿进行捕获,一般用于测量输入信号的脉宽、测量PWM输入信号的频率和占空比。

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论