STM32定时器详解 -----影子寄存器,预装寄存器
使用这个配置
位7 ARPE:自动重装载预装载允许位 (Auto-reload preload enable)
0:TIMx_ARR寄存器没有缓冲;
1:TIMx_ARR寄存器被装入缓冲器。
位6:5 CMS[1:0]:选择中央对齐模式 (Center-aligned mode selection)
00:边沿对齐模式。计数器依据方向位(DIR)向上或向下计数。
01:中央对齐模式1。计数器交替地向上和向下计数。配置为输出的通道(TIMx_CCMRx寄存器中CCxS=00)的输出比较中断标志位,只在计数器向下计数时被设置。
10:中央对齐模式2。计数器交替地向上和向下计数。配置为输出的通道(TIMx_CCMRx寄存器中CCxS=00)的输出比较中断标志位,只在计数器向上计数时被设置。
11:中央对齐模式3。计数器交替地向上和向下计数。配置为输出的通道(TIMx_CCMRx寄存器中CCxS=00)的输出比较中断标志位,在计数器向上和向下计数时均被设置。
在计数器开启时(CEN=1),不允许从边沿对齐模式转换到中央对齐模式。
位4 DIR:方向 (Direction)
0:计数器向上计数;
1:计数器向下计数。
当计数器配置为中央对齐模式或编码器模式时,该位为只读。
位3 OPM:单脉冲模式 (One pulse mode)
0:在发生更新事件时,计数器不停止;
1:在发生下一次更新事件(清除CEN位)时,计数器停止。
位2 URS:更新请求源 (Update request source)
软件通过该位选择UEV事件的源
0:如果使能了更新中断或DMA请求,则下述任一事件产生更新中断或DMA请求:
−计数器溢出/下溢
−设置UG位
−从模式控制器产生的更新
1:如果使能了更新中断或DMA请求,则只有计数器溢出/下溢才产生更新中断或DMA请求
位1 UDIS:禁止更新 (Update disable)
软件通过该位允许/禁止UEV事件的产生
0:允许UEV。更新(UEV)事件由下述任一事件产生:
−计数器溢出/下溢
−设置UG位
−从模式控制器产生的更新 具有缓存的寄存器被装入它们的预装载值。(更新影子寄存器)
1:禁止UEV。不产生更新事件,影子寄存器(ARR、PSC、CCRx)保持它们的值。如果设置了UG位或从模式控制器发出了一个硬件复位,则计数器和预分频器被重新初始化。
位0 CEN:使能计数器 (Counter enable)
0:禁止计数器;
1:使能计数器。
在软件设置了CEN位后,外部时钟、门控模式和编码器模式才能工作。触发模式可以自动地通过硬件设置CEN位。
6.事件产生寄存器
位15:8 保留,始终读为0。
位7 BG:产生刹车事件 (Break generation) 该位由软件置’1’,用于产生一个刹车事件,由硬件自动清’0’。
0:无动作;
1:产生一个刹车事件。此时MOE=0、BIF=1,若开启对应的中断和DMA,则产生相应的中断和DMA。
位6 TG:产生触发事件 (Trigger generation) 该位由软件置’1’,用于产生一个触发事件,由硬件自动清’0’。
0:无动作;
1:TIMx_SR寄存器的TIF=1,若开启对应的中断和DMA,则产生相应的中断和DMA。
位5 COMG:捕获/比较事件,产生控制更新 (Capture/Compare control update generation) 该位由软件置’1’,由硬件自动清’0’。
0:无动作;
1:当CCPC=1,允许更新CCxE、CCxNE、OCxM位。
该位只对拥有互补输出的通道有效。
位4 CC4G:产生捕获/比较4事件 (Capture/Compare 4 generation) 参考CC1G描述。
位3 CC3G:产生捕获/比较3事件 (Capture/Compare 3 generation) 参考CC1G描述。
位2 CC2G:产生捕获/比较2事件 (Capture/Compare 2 generation) 参考CC1G描述。
位1 CC1G:产生捕获/比较1事件 (Capture/Compare 1 generation) 该位由软件置’1’,用于产生一个捕获/比较事件,由硬件自动清’0’。
0:无动作;
1:在通道CC1上产生一个捕获/比较事件:
若通道CC1配置为输出: 设置CC1IF=1,若开启对应的中断和DMA,则产生相应的中断和DMA。
若通道CC1配置为输入: 当前的计数器值被捕获至TIMx_CCR1寄存器;设置CC1IF=1,若开启对应的中断和DMA,则产生相应的中断和DMA。
若CC1IF已经为1,则设置CC1OF=1。
位0 UG:产生更新事件 (Update generation) 该位由软件置’1’,由硬件自动清’0’。
0:无动作;
1:重新初始化计数器,并产生一个更新事件。注意预分频器的计数器也被清’0’(但是预分频系数不变)。若在中心对称模式下或DIR=0(向上计数)则计数器被清’0’;若DIR=1(向下计数)则计数器取TIMx_ARR的值。
关于刹车事件,触发事件,捕获比较事件的描述,详见数据手册13章
程序分析:
固件库函数分析:
STM32的高级定时器功能十分强大,但相应的功能强大就意味着结
STM32定时器影子寄存器预装寄存 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)