当前位置: 首页 > news >正文

【通用定时器TIM2 TIM3 TIM4 TIM5】

                                        通用定时器

       通用定时器在基础定时器的基础上增加了一些功能,比如:输入捕获、输出比较、输出pwm和单脉冲模式等。
      我们先来看框图,相对比较复杂,但是一部分一部分看,然后再串通起来,就可以懂了。所以切不要急。

① 时钟源(关于STM32定时器的时钟源的选择)

  (1)内部时钟(CK_INT)

    CK_INT = (APB1 预分频系数 >= 2 ) ? (APB1时钟 * 2) : (APB1时钟)

    (2) 外部时钟模式1:外部输入引脚TIx(1,2)

     外部输入引脚TIx(1,2)即只能来自定时器的通道1或者2。图上TI1F_ED、TI1FP1、TI2FP2
    外部时钟源信号->IO->TIMx_CH1/2(不能CH3、CH4);IO口用作定时器外部时钟源信号,配置IO的复用功能。

    1)TI2经过滤波器(TIMx_CCMR1的ICF[3:0]),接着经过边沿检测器,通过TIMx_CCER的CC2P位设置检测的边沿,可以是TI2F_Rising、TI2F_Falling。
    2)接着通过触发输入选择器(TIMx_SMCR的TS[2:0]),选择TRGI的来源(TI1_ED即CH1的双边沿信号、TI1FP1即CH1经过CC2P边沿检测后的信号、TI2FP2即CH2经过CC2P边沿检测后的信号);如图,TS设置110,则选择TI2FP2作为TRGI的来源。
    3)最后经过从模式选择器(SMS[2:0]),选择定时器的时钟源(CK_PSC),CK_PSC经过定时器的预分频器分频后,得到计数器频率CK_CNT。如图,ECE(外部时钟使能位,该位启用外部时钟模式2)设置0,SMS[2:0]设置111,则选择外部时钟模式1。
   (3)外部时钟模式2:外部触发输入(ETR)
      外部时钟源信号→IO→TIMx_ETR

    1)ETR引脚输入经过外部触发极性选择器(ETP位),当选择下降沿有效的话,信号会经过反相器。
    2)接着经过外部触发预分频器(ETPS[1:0])。
    3)接着经过滤波器(ETF[3:0])。fDTS由TIMx_CR1寄存器CKD位设置。CKD位:时钟分频因子。
    4)最后经过从模式选择器(SMS[2:0]),选择外部时钟模式2。如图,ECE设置1即可。
   (4)内部触发输入(ITRx)

    使用一个定时器作为另一个定时器的预分频器,即实现定时器的级联。
    

从定时器

从定时器的ITR0(TS=000)

从定时器的ITR1(TS=001)

从定时器的ITR2(TS=010)

从定时器的ITR3(TS=011)

TIM1

主定时器TIM5_TRGO

主定时器TIM2_TRGO

主定时器TIM3_TRGO

主定时器TIM4_TRGO

TIM2

主定时器TIM1_TRGO

主定时器TIM8_TRGO

主定时器TIM3_TRGO

主定时器TIM4_TRGO

TIM3

主定时器TIM1_TRGO

主定时器TIM2_TRGO

主定时器TIM5_TRGO

主定时器TIM4_TRGO

TIM4

主定时器TIM1_TRGO

主定时器TIM2_TRGO

主定时器TIM3_TRGO

主定时器TIM8_TRGO

TIM5

主定时器TIM2_TRGO

主定时器TIM3_TRGO

主定时器TIM4_TRGO

主定时器TIM8_TRGO

TIM8

主定时器TIM1_TRGO

主定时器TIM2_TRGO

主定时器TIM4_TRGO

主定时器TIM5_TRGO

如图如表所示,定时器1作为定时器2的预分频器。
    1)定时器1主模式选择器(TIM1_CR2的MMS[2:0])设置010,即主模式选择为更新(选择更新事件作为触发输出(TRGO1))。
    2)定时器2从模式控制寄存器(TIM2_SMCR)的TS[2:0]位设置000,即使用ITR1作为内部触发。再经过从模式控制器(SMS)得到CK_PSC。 SMS[2:0]设置111,即从模式控制器选择外部时钟模式1。

     ② 控制器

    控制器包括:从模式下定时器触发控制器(管理TRGI)、编码器接口和主模式下定时器触发控制器(管理TRGO)。从模式下定时器触发控制器,通过选择TRGI通道上的输入信号源,可以控制计数器复位、启动、递增/递减、计数。编码器接口针对编码器计数。主模式下定时器触发控制器用来提供触发信号给别的外设,比如为其它定时器提供时钟、启动信号等或者为 DAC/ADC 的触发转换提供TRGO输出信号。

     ③时基单元

     (1)  时基单元包括:计数器寄存器(TIMx_CNT)、预分频器寄存器(TIMx_PSC)、自动重载寄存器(TIMx_ARR)。
     (2) 定时器的计数模式有三种:递增计数模式、递减计数模式、中心对齐计数模式。
     1) 递增和递减模式都熟悉,不解释。
     2) 中心对齐计数模式:计数器先从0开始递增计数,直到计数器值等于自动重装载寄存器影子寄存器值减1时,定时器上溢,产生更新事件,然后从自动重装载寄存器影子寄存器值开始递减计数,直到计数值等于1时,定时器下溢,产生更新事件,然后又从0开始递增计数,依次循环。
     3) 计数器模式设置由TIMx_CR1寄存器的CMS和DIR位控制。

  •      边沿对齐模式(递增计数模式和递减计数模式)(CMS=00):递增计数模式和递减计数模式。
  •      中央对齐模式1(CMS=01):输出比较中断标志位CCxIF(当TIMx_CCMRx寄存器中CCxS=00配置为输出比较的时候)只在计数器向下计数时被设置
  •     中央对齐模式2(CMS=10):输出比较中断标志位CCxIF(当TIMx_CCMRx寄存器中CCxS=00配置为输出比较的时候)只在计数器向上计数时被设置
  •     中央对齐模式3(CMS=11):输出比较中断标志位在计数器CCxIF(当TIMx_CCMRx寄存器中CCxS=00配置为输出比较的时候)向上和向下计数时均被设置


        ④输入捕获


     (1)TI1经过一个滤波器,由TIMx_CCMR1的ICF[3:0]位设置滤波方式。再经过边沿检测器,由捕获/比较使能寄存器(TIMx_CCER) 的 CC1P 位来设置检测的边沿,可以上升沿或者下降沿检测。CC1NP是配置互补通道的边沿检测的,在高级定时器才有,通用定时器没有。
fDTS由TIMx_CR1 寄存器的 CKD 位设置。
     (2)然后经过捕获/比较1选择器(CC1S[1:0]),选择将IC1映射在TI1、TI2或者TRC。如图,设置CC1S[1:0]为01,即CC1通道被配置为输入,IC1映射在TI1上;
     (3)接着经过输入捕获1预分频器,由ICPS[1:0]位设置预分频系数。然后把CCIE位置1,使能输入捕获,IC1PS就是分频后的捕获信号。

     ⑤ 输入捕获和输出比较公共部分

     (1)输入捕获功能部分

结合④输入捕获,我们从图中(非阴影部分)可以看到:

  • CC1S配置为01,即CC1通道被配置为输入,IC1映射在TI1上;
  • IC1PS是分频后的捕获信号;
  • CC1E位置1捕获使能。

软件产生捕获事件:CC1G位可以产生软件捕获事件;
硬件产生捕获事件:比如检测上升沿信号,当上升沿到来时,IC1PS信号就会触发输入捕获事件发生,计数器的值就会被锁存在捕获/比较影子寄存器中。当没有CCR1读操作时,捕获/比较影子寄存器里的值就会锁存到 CCR1 寄存器中,程序员就可读取CCR1寄存器值,获得计数器得计数值。
     (2)输出比较功能部分

  • 程序员写CCR1寄存器,即写入比较值;
  • CC1S设置为00,即CC1通道被配置为输出;
  • OC1PE预装载使能,如果设置1,则或门输出就是UEV的值。

       图中(非阴影区域)可以看到:捕获/比较预装载寄存值要转移到捕获/比较影子寄存器通过一个与门控制,与门输入分别是CCR1写入操作、CC1S是否配置为00,OC1PE、UEV通过或门得输出,所以捕获/比较预装载寄存值要转移到捕获/比较影子寄存器要满足三个条件:CCR1 不在写入操作期间、CC1S[1:0] = 00 配置为输出、OC1PE 位置0(或者 OC1PE 位置 1,并且需要发生更新事件,这个更新事件可以软件产生或者硬件产生)。
       当 CCR1 寄存器的值转移到其影子寄存器后,新的值就会和计数器的值进行比较。

    ⑥输出比较

图中可知:
(1)oc1ref是输出参考信号,高电平有效,低电平无效。它的高低电平受三个方面影响:

   1)由⑤中的输出比较功能部分得的比较结果;

  •  当计数器的值和捕获/比较寄存器的值相等时,输出参考信号 oc1ref 的极性就会设定为我们预先配置好的值;
  • 如果开启了比较中断,还会发生比较中断。

   2)输出比较1模式OC1M[2:0]设置为输出比较模式;

        输出参考信号 oc1ref 的极性就会根据我们选择的输出比较模式而改变。

OCxM[2:0]模式

功能

备注

000

冻结模式(TIM_OCMode_Timing)

OC1REFTIMx_CCRxTIMx_CNT无关

引脚和定时器比较结果无关

定时器仅为时基类应用

001

相等则有效模式(TIM_OCMode_Active)

TIMx_CNT = TIMx_CCRxOCxREF= 1

从匹配时刻起,引脚一直输出有效电平

010

相等则无效模式(TIM_OCMode_Inactive)

TIMx_CNT = TIMx_CCRxOCxREF= 0

从匹配时刻起,引脚一直输出无效电平

011

相等则翻转模式(TIM_OCMode_Toggle)

TIMx_CNT = TIMx_CCRxOCxREF翻转

引脚输出方波频率

100

软件强制无效模式(TIM_ForcedAction_InActive)

TIMx_CCRxTIMx_CNT无关,OCxREF= 0

软件设置引脚为无效状态

101

软件强制有效模式(TIM_ForcedAction_Active)

与TIMx_CCRx及TIMx_CNT无关,OCxREF= 1

软件设置引脚为有效状态

OCxM[2:0]模式

功能

备注

110

PWM1模式(TIM_OCMode_PWM1):

向上计数时,在TIMx_CNT<TIMx_CCRxOCxREF= 1,否则OCxREF= 0

在向下计数时,TIMx_CNT>TIMx_CCRxOC1REF= 0,否则OC1REF= 1

PWM输出模式

111

PWM2模式(TIM_OCMode_PWM2):

PWM1相比,比较结果OCxREF恰好相反

PWM输出模式

   3)ETRF由OC1CE位配置。

  • OC1CE位是输出比较通道1清零使能位。
  • 0:OC1REF 不受ETRF输入的影响;
  • 1:一旦检测到ETRF输入高电平,清除OC1REF=0。

(2)oc1ref信号经过通道输出极性选择(CC1P),再到输出使能电路,由通道输出使能(CC1E)控制,输出OC1信号。

相关文章:

  • 大端小端以及判别方式
  • java集合篇(三) ---- Collection 接口
  • LINE 接入说明
  • 学了软件测试后可以做哪些工作
  • Linux系统下安装RocketMQ5.3
  • Blazor Web Assembly - 使用Power Automate Desktop来跟踪一下Blazor页面的内存使用情况
  • 【win10神州网信政府版开启远程桌面服务mstsc 】
  • GO 1.25
  • 什么是NIST CSF合规?ManageEngine卓豪合规指南!
  • linux用反汇编分析访问空指针问题
  • Android学习之Provider
  • linux 黑马 第1-2章
  • 北航自由指令驱动的多模态导航最新研究:OctoNav:开启通用智能体具身导航
  • Python训练营---DAY53
  • yum查看历史操作
  • PDM网络图上的ES、EF、LS、LF是干嘛的怎么计算下一个节点的数值
  • C++中的零拷贝技术
  • 2.线性表的链式存储-链表
  • 掌握产品功能结构图,优化项目开发流程
  • 精粹汇总:大厂编程规范(持续更新)
  • 电商网站的人员团队建设/广告营销案例分析
  • 专注湛江地区网站开发定制建设/网络营销做得比较好的企业
  • 基于html5动画的网站/提高工作效率整改措施
  • 南京江宁网站制作/百度一下你知道
  • 网站内的搜索怎么做的/百度账号注销
  • 网站建设网站备案所需资料/苏州seo公司