按时器的相关寄放器_第1页
按时器的相关寄放器_第2页
按时器的相关寄放器_第3页
按时器的相关寄放器_第4页
按时器的相关寄放器_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

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

文档简介

1、按时器在STM32F10 xx逐歹【的32位MCUt,按时器资源十分丰硕,包括高级操纵按时器,通用按时器和大体按时器。另外,还有能够实现按时功能的系统滴答按时器,实不时钟和看门狗。关于这些按时器的介绍,占据了STM32F10 xx嬉考手册1/5的篇幅,可见其功能的壮大。在低容量和中容量的STM32F103xx品,和互联型产品STM32F105x*口STM32F107x。,只有一个高级操纵按时器TIM1。而在高容量和超大容量的STM32F103xx品中,有两个高级操纵按时器TIM1和TIM8。在所有STM32F10 xx逐列产品中,都有通用按时器TIM2TIM5,除非还有说明。除此之外,在超大容

2、量产品中,还有通用按时器TIM9TIM14在高容量和超大容量的STM32F101x*口STM32F103x小品,和互联型产品STM32F105xxF口STM32F107xxK有两个大体按时器TIM6和TIM7。其中,高级操纵按时器的功能最为壮大,能够实现所有其他按时器的所有功能。TrailBreaker开发板利用的是高容量的STM32F103ZE因此有两个高级操纵按时器TIM1和TIM8。下面咱们就着重介绍这两个高级操纵按时器。TIM1和TIM8简介高级操纵按时器(TIM1和TIM8)由一个16位的自动装载计数器组成,它由一个可编程的预分频器驱动。它适合多种用途,包括测量输入信号的脉冲宽度(输

3、入捕捉),或产生输出波形(输出比较、PWM嵌入死区时刻的互补PWMH)利用按时器预分频器和RCC寸钟操纵预分频器,能够实现脉冲宽度和波形周期从几个微秒到几个毫秒的调剂。关于实验顶用到的LED部份原理图和GPIO跑马灯实验所用到的相同,在此再也不多做介绍。TIM1和TIM8按时器的功能包括:16位向上、向下、向上/下自动装载计数器16位可编程(能够实时修改)预分频器,计数器时钟频率的分频系数为165535之间的任意数值多达4个独立通道:一输入捕捉一输出比较一PWMft成(边缘或中间对齐模式)一单脉冲模式输出死区时刻可编程的互补输出利用外部信号操纵按时器和按时器互联的同步电路许诺在指定数量的计数器

4、周期以后更新按时器寄放器的重复计数器刹车输入信号能够将按时器输出信号置于复位状态或一个已知状态如下事件发生时产生中断/DMA一更新:计数器向上溢出/向下溢出,计数器初始化(通过软件或内部/外部触发)一触发事件(计数器启动、停止、初始化或由内部/外部触发计数)一输入捕捉一输出比较一刹车信号输入支持针对定位的增量(正交)编码器和霍尔传感器电路触发输入作为外部时钟或按周期的电流治理高级按时器框图和时钟简介牝前/部CK T MlBiTornRCC FT*# tint 4*内 ffTM -f1时- mi r.*匕 Miw brnAUto DACM0CTIUl CH4 nEtRF需港盟i粒VP*e4cad

5、fgraterstr*i*fTed9active电9里urmmU电MemsecondiPggcarttfsibrttnbtmtpi & DLW output如框图中的红框所示,红框中的部份,也是时基单元(Time-baseunit),对时基单元进行设置,就能够够完成基础的按时器的利用设置。计数器时钟可由以下时钟源提供:内部时钟(CK_INT)外部时钟模式1:外部输入引脚外部时钟模式2:外部触发输入ETR内部触发输入(ITRx):利用一个按时器作为另一个按时器的预分频器。如能够配置一个按时器Timeri而作为另一个按时器Timer2的预分频器。详见数据手册的通用按时器部份。内部时钟源(CKINT

6、):若是禁止了从模式操纵器(SMS=000),那么CENDIR(TIMx_CR1寄放器)和UG&(TIMx_EGR寄放器)是事实上的操纵位,而且只能被软件修改(UG位仍被自动清除)。只要CEN被写成1,预分频器的时钟就由内部时钟CK_INT是供。以下图显示操纵电路和向上计数器在一样模式下,不带预分频器时的操作。外部时钟源模式1当TIMx_SMCRf放器的SMS=11为寸,此模式被选中。计数器能够在选定输入端的每一个上升沿或下降沿计数。以下图为TI2外部时钟连接例子例如,要配置向上计数器在T12输入端的上升沿计数,利用以下步骤:1.配置TIMx_CCMR寄放器CC2s=01.配置TIMx_CCM

7、R寄放器的IC2F3:0,选择输入滤波器带宽(若是不需要滤波器,维持IC2F=0000).配置TIMx_CCERj放器的CC2P=0选定上升沿极性.配置TIMx_SMCRf放器的SMS=111选择按时器外部时钟模式1.配置TIMx_SMCRf放器中的TS=11Q选定TI2作为触发输入源.设置TIMx_CR1寄放器的CEN=1使能计数器注:捕捉预分频器不用作触发,因此不需要对它进行配置当上升沿出此刻TI2,计数器计数一次,且TIF标志被设置。在TI2的上升沿和计数器实际时钟之间的延时,取决于在TI2输入端的从头同步电路。以下图为外部时钟模式1下的操纵电路外部时钟源模式2选定此模式的方式为:令TI

8、Mx_SMCRf放器中的ECE=1计数器能够在外部触发ETR的每一个上升沿或下降沿计数。以下图是外部触发输入的框图设置从模式操纵寄放器的ETP位选择选择是用ETR仍是ETR的反相来作为触发操作例如,要配置在ETR下每2个上升沿计数一次的向上计数器,利用以下步骤:.本例中不需要滤波器,置TIMXSMCR1放器中的ETF3:0=0000.设置预分频器,置TIMXSMCR1放器中的ETPS1:0=01.选才?ETR的上升沿才测,置TIMx_SMCRf放器中的ETP=0.开启外部时钟模式2,写TIMX_SMCR1放器中的ECE=1.启动计数器,写TIMx_CR1寄放器中的CEN=1计数器在每2个ETR

9、上升沿计数一次。在ETR的上升沿和计数器实际时钟之间的延时取决于在ETRPJ号端的从头同步电路。以下图为外部时钟模式2下的操纵电路如图,该图为STM32勺时钟树,结合高级操纵按时器框图,咱们能够看出,高级按时器的时钟不是直接来自APBZ而是来自于输入为APB2的一个倍频器。当APB2的预分频系数为1时,那个倍频器不起作用,按时器的时钟频率等于APB2的频率;当APB2的预分频系数为其它数值(即预分频系数为二、4、8或16)时,那个分频器起作用,按时器的时钟频率等于APB2的频率相应倍数。假定AHB=36MHz因为APB2W诺的最大频率为72MHz因此APB2的预分频系数能够取任意数值;当预分频

10、系数=1时,APB2=72MHzTIMI和TIM8的时钟频率=72MHz分频器不起作用);当预分频系数=2时,APB1=36MHz在倍频器的作用下,TIM1和TIM8的时钟频率=72MHz有人会问,既然需要TIM1和TIM8的时钟频率为72MHz什么缘故不直接取APB2的预分频系数=1?答案是:APB2但要为TIM1和TIM8提供时钟,而且还要为其它外设提供时钟;设置那个倍频器能够在保证其它外设利用较低时钟频率时,TIM1和TIM8仍能取得较高的时钟频率。再举个例子:当AHB=72MH时,APB2因为其他设备需要,时钟为36MHz因为那个倍频器,TIM1和TIM8仍然能够取得72MHzB勺时钟

11、频率。能够利用更高的时钟频率,无疑提高了按时器的分辨率,这也正是设计那个倍频器的初衷。高级按时器寄放器简介可编程高级操纵按时器的要紧部份是一个16位计数器和与其相关的自动装载寄放器。那个计数器能够向上计数、向下计数或向上向下双向计数。此计数器时钟由预分频器分频取得。计数器、自动装载寄放器和预分频器寄放器能够由软件读写,即便计数器还在运行读写仍然有效。时基单元,也确实是决定了按时器的大体功能的模块包括:.计数器寄放器(Counterregister,简写为TIMx_CNT).预分频器寄放器(Prescalerregister,简写为TIMx_PSC).自动装载寄放器(Auto-reloadreg

12、ister,简写为TIMx_ARR).重复次数寄放器(Repetitioncounterregister,简写为TIMx_RCR)这张图是高级按时器框图的一部份,细心的人能够发觉预分频器寄放器、自动重载寄放器和捕捉/比较寄放器下面有一个阴影,其他的寄放器有些也有阴影。这表示在物理上那个寄放器对应2个寄放器:一个是咱们能够能够写入或读出的寄放器,称为预装载寄放器,另一个是咱们看不见的、无法真正对其读写操作的,但在利用中真正起作用的寄放器,称为影子寄放器.数据手册介绍预装载寄放器的内容能够随时传送到影子寄放器,即二者是连通的(permanently),或在每一次更新事件(UEV)时才把预装载寄放器

13、的内容传送到影子寄放器。原文如下:Theauto-reloadregisterispreloaded.Writingtoorreadingfromtheauto-reloadregisteraccessesthepreloadregister.Thecontentofthepreloadregisteraretransferredintotheshadowregisterpermanentlyorateachupdateevent(UEV),dependingontheauto-reloadpreloadenablebit(ARPE)inTIMx_CR1register.Theupdateev

14、entissentwhenthecounterreachestheoverflow(orunderflowwhendowncounting)andiftheUDISbitequals0intheTIMx_CR1register.Itcanalsobegeneratedbysoftware.Thegenerationoftheupdateeventisdescribedindetailedforeachconfiguration.在图中的,表示对应寄放器的影子寄放器能够在发生更新事件时,被更新为它的预装载寄放器的内容;而图中的部份,表示对应的自动重载寄放器能够产生一个更新事件(U)或更新事件中断

15、(UI)。设计预装载寄放器和影子寄放器的益处是,所有真正需要起作用的寄放器(影子寄放器)能够在同一个时刻(发生更新事件时)被更新为所对应的预装载寄放器的内容,如此能够保证多个通道的操作能够准确地同步。若是没有影子寄放器,软件更新预装载寄放器时,那么同时更新了真正操作的寄放器,因为软件不可能在一个相同的时刻同时更新多个寄放器,结果造成多个通道的时序不能同步,若是再加上例如中断等其它因素,多个通道的时序关系有可能会混乱,造成是不可预知的结果。预分频器能够将计数器的时钟频率按1到65536之间的任意值分频。它是基于一个在TIMx_PSCf放器中的16位寄放器操纵的16位计数器。因为那个操纵寄放器带有

16、缓冲器,它能够在运行时被改变。新的预分频器的参数在下一次更新事件到来时被采纳。下面给出了在预分频器运行时,更改计数器参数的例子当预分频器的参数从1变到2时,计数器的时序图如下:当预分频器的参数从1变到4时,计数器的时序图如下:预分频寄放器列位的描述如下:位15:0PSC15:0:预分频值计数器的时钟频率(CK_CNT等于fCK_PSC/(PSC15:0+1)。PSC的值保留在预分频寄放器的预装载寄放器中,在每次更新事件时加载至影子寄放器.高级按时器计数模式:在向上计数模式中,计数器从0计数到自动加载值(TIMx_ARR计数器的内容),然后从头从0开始计数而且产生一个计数器溢出事件。若是利用了重

17、复计数器功能,在向上计数达到设置的重复计数次数(TIMx_RCR)时,产生更新事件(UEV);不然每次计数器溢出时才产生更新事件。在事件产生寄放器寄放器中(通过软件方式或利用从模式操纵器)设置UG&也一样能够产生一个更新事件。设置TIMx_CR1寄放器中的UDIS位,能够禁止更新事件;如此能够幸免在向预装载寄放器中写入新值时更新影子寄放器。在UDIS位被清0之前,将不产生更新事件。可是在应该产生更新事件时,计数器仍会被清0,同时预分频器的计数也被请0(但预分频器的数值不变)0另外,若是设置了TIMx_CR1寄放器中的URSa(选择更新请求),设置UG位将产生一个更新事件UEV但硬件不设置UIF

18、标志(即不产生中断或DMA青求)。这是为了幸免在捕捉模式下清除计数器时,同时产生更新和捕捉中断。当发生一个更新事件时,所有的寄放器都被更新,硬件同时(依据URSa)设置更新标志位(TIMx_SR寄放器中的UIF位)。重复计数器被从头加载为TIMx_RCRif放器的内容。自动装载影子寄放器被从头置入预装载寄放器的值(TIMx_ARR预分频器的缓冲区被置入预装载寄放器的值(TIMx_PSC寄放器的内容)o下面给出一些例子,当TIMx_ARR=0 x36寸计数器在不同时钟频率下的动作。内部时钟分频因子为1时的计数器时序图如下:内部时钟分频因子为2时的计数器时序图如下:内部时钟分频因子为4时的计数器时

19、序图如下:内部时钟分频因子为N时的计数器时序图如下:当ARPE=0寸的更新事件(TIMx_ARR没有预装入)时的计数器时序图如下:当ARPE=F寸的更新事件(TIMx_ARRS装入)时的计数器时序图如下:在向下模式中,计数器从自动装入的值(TIMx_ARR计数器的值)开始向下计数到0,然后从自动装入的值从头开始而且产生一个计数器向下溢出事件若是利用了重复计数器,当向下计数重复了重复计数寄放器(TIMx_RCR)中设定的次数后,将产生更新事件(UEV),不然每次计数器下溢时才产生更新事件。在TIMx_EGFW放器中(通过软件方式或利用从模式操纵器)设置UG位,也一样能够产生一个更新事件。设置TI

20、Mx_CR1寄放器的UDIS位能够禁止UEV*件。如此能够幸免向预装载寄放器中写入新值时更新影子寄放器。因此UDIS位被满为0之前可不能产生更新事件。但是,计数器仍会从当前自动加载值从头开始计数,而且预分频器的计数重视新从0开始(但预分频系数不变)。另外,若是设置了TIMx_CR1寄放器中的URSa(选择更新请求),设置UG位将产生一个更新事件UEV且不设置UIF标志(因此不产生中断和DMA青求),这是为了幸免在发生捕捉事件并清除计数器时,同时产生更新和捕捉中断。当发生更新事件时,所有的寄放器都被更新,而且(依照UR附的设置)更新标志位(TIMx_SR寄放器中的UIF位)也被设置。重复计数器被

21、重置为TIMx_RCFW放器中的内容预分频器的缓存器被加载为预装载的值(TIMx_PSC寄放器的值)0当前的自动加载寄放器被更新为预装载值(TIMx_ARR寄放器中的内容)0注:自动装载在计数重视载入之前被更新,因此下一个周期将是预期的值。下面是一些当TIMx_ARR=0 x36寸,计数器在不同时钟频率下的动作。内部时钟分频因子为1时的计数器时序图如下:内部时钟分频因子为2时的计数器时序图如下:内部时钟分频因子为4时的计数器时序图如下:内部时钟分频因子为N时的计数器时序图如下:当没有利用重复计数器时的更新事件时的计数器时序图:中央对齐模式(up/downcounting)在中央对齐模式,计数器

22、从0开始计数到自动加载的值(TIMx_ARR寄放器)-s211,产生一个计数器溢出事件,然后向下计数到1而且产生一个计数器下溢事件;然后再从0开始从头计数。在此模式下,不能写入TIMx_CR1中的DIR方向位。它由硬件更新并指示当前的计数方向。能够在每次计数上溢和每次计数下溢时产生更新事件;也能够通过(软件或利用从模式操纵器)设置TIMx_EGFW放器中的UG位产生更新事件。然后,计数重视新从0开始计数,预分频器也从头从0开始计数。设置TIMx_CR1寄放器中的UDIS位能够禁止UEV#件。如此能够幸免在向预装载寄放器中写入新值时更新影子寄放器。因此UDIS位被满为0之前可不能产生更新事件。但

23、是,计数器仍会依照当前自动重加载的值,继续向上或向下计数。另外,若是设置了TIMx_CR1寄放器中的URSIL(选择更新请求),设置UG&将产生一个更新事件UEV且不设置UIF标志(因此不产生中断和DMAt求),这是为了幸免在发生捕捉事件并清除计数器时,同时产生更新和捕捉中断。当发生更新事件时,所有的寄放器都被更新,而且(依照UR附的设置)更新标志位(TIMx_SR寄放器中的UIF位)也被设置。重复计数器被重置为TIMx_RCFW放器中的内容预分频器的缓存器被加载为预装载(TIMx_PSC寄放器)的值。当前的自动加载寄放器被更新为预装载值(TIMx_ARR寄放器中的内容)。注:若是因为计数器溢

24、出而产生更新,自动重装载将在计数重视载入之前被更新,因此下一个周期将是预期的值(计数器被装载为新的值)。下面是一些计数器在不同时钟频率下的操作的例子:内部时钟分频因子为1,TIMx_ARR=0 x6寸的计数器时序图:内部时钟分频因子为2时的计数器时序图:内部时钟分频因子为4,TIMx_ARR=0 x36寸的计数器时序图:注:在此不管是中心对齐模式2或3都是在溢出时与UIF标志一路利用内部时钟分频因子为N,计数器时序图如下:ARPE=F寸的更新事件(计数器下溢),计数器时序图如下:计数器寄放器列位的描述如下:位15:0ARR15:0:自动重装载的值(Prescalervalue)ARRfe括了将

25、要装载入实际的自动重装载寄放器的值。详细参考数据手册节:有关ARR勺更新和动作。当自动重装载的值为空时,计数器不工作。前面说明了计数器上溢/下溢时更新事件(UEV)是如何产生的,但是事实上它只能在重复计数达到0的时候产生。那个特性对产生PWM1号超级有效。这意味着在每N次计数上溢或下溢时,数据从预装载寄放器传输到影子寄放器(TIMx_ARR自动重载入寄放器,TIMx_PSC装载寄放器,还有在比较模式下的捕捉/比较寄放器TIMx_CCRx)N是TIMx_RCR1复计数寄放器中的值。重复计数器在下述任一条件成立时递减:向上计数模式下每次计数器溢出时,向下计数模式下每次计数器下溢时,中央对齐模式下每

26、次上溢和每次下溢时。尽管如此限制了PWMJ最大循环周期为128,但它能够在每一个PWIW期2次更新占空比。在中央对齐模式下,因为波形是对称的,若是每一个PWMB期中仅刷新一次比较寄放器,那么最大的分辨率为2xTck。重复计数器是自动加载的,重复速度是由TIMx_RCFW放器的值概念。当更新事件由软件产生(通过设置TIMx_EGR中的UGa)或通过硬件的从模式操纵器产生,那么不管重复计数器的值是多少,当即发生更新事件,而且TIMx_RCRtf放器中的内容被重载入到重复计数器。以下图为不同模式下更新速度的例子,及TIMx_RCR勺寄放器设置重复计数器列位的描述如下:位15:8保留位,始终读为00位

27、7:0REP7:0:重复计数器的值(Repetitioncountervalue)开启了预装载功能后,这些位许诺用户设置比较寄放器的更新速度(即周期性地从预装载寄放器传输到当前寄放器);若是许诺产生更新中断,那么会同时阻碍产生更新中断的速度。每次向下计数器REP_CN达至IJ0,会产生一个更新事件而且计数器REP_CNT从头从REPfi开始计数。由于REP_CNT有在周期更新事件U_R3生时才重载REPTIM_CounterMode);assert_param(IS_TIM_CKD_DIV(TIM_TimeBaseInitStruct-TIM_ClockDivision);tmpcr1=TIM

28、x-CR1;if(TIMx=TIM1)|(TIMx=TIM8)|(TIMx=TIM2)|(TIMx=TIM3)|(TIMx=TIM4)|(TIMx=TIM5)tmpcr1&=(uint16_t)(uint16_t)(TIM_CR1_DIR|TIM_CR1_CMS);tmpcr1|=(uint32_t)TIM_TimeBaseInitStruct-TIM_CounterMode;if(TIMx!=TIM6)&(TIMx!=TIM7)tmpcr1&=(uint16_t)(uint16_t)TIM_CR1_CKD);tmpcr1|=(uint32_t)TIM_TimeBaseInitStruct-TIM_ClockDivision;TIMx-CR1=tmpcr1;TIMx-ARR=TIM_TimeBaseInitStruct-TIM_Period;TIMx-PSC=TIM_TimeBaseInitStruct-

温馨提示

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

最新文档

评论

0/150

提交评论