历史上的今天
返回首页

历史上的今天

今天是:2026年03月07日(星期六)

2023年03月07日 | 【话说定时器系列】之三:STM32定时器的信号触发与主从模式

2023-03-07 来源:zhihu

本文介绍的定时器的信号触发与主从模式,主要指通用定时器或高级定时器,不涉及基本定时器,因为基本定时器相对比较简单,对外无过多联络。


那对于STM32定时器而言,有哪些触发信号呢?这些信号来自何处?或流向哪里呢?


触发信号分两大类:触发输入信号【TRGI】,简单地讲就是从外部引入到本定时器的信号;另一类就是触发输出信号,即TRGO信号,它是定时器输出给其它定时器或外设的触发信号。


在STM32参考手册里文字描述部分,找不到一句完整的关于触发输入信号的描述文字,它主要把触发输入信号的概念融入进时钟源部分,倒是在从模式控制寄存器TIMX_SMCR的TS字段对定时器的触发输入信号有个系统的归纳。从数目上有讲一般可以多达8个,大致分为三类:






第一类:来自定时器自身输入通道1或通道2的输入信号,经过极性选择和滤波以后生成的触发信号,连接到从模式控制器,进而控制计数器的工作;顺便提醒下,来自通道1的输入信号经过上升沿、下降沿双沿检测而生成的脉冲信号进行逻辑相或以后的信号就是TI1F_ED信号,即TI1F_ED双沿脉冲信号。









第二类,来自于外部触发脚[ETR脚]经过极性选择、分频、滤波以后的信号,经过触发输入选择器,连接到从模式控制器。当然分频和滤波不是必需的,可以根据外来信号频率高低及信号干净度来决定。




第三类,来自其它定时器的触发输出信号,通过内部线路连接到本定时器的触发输入控制器而连接到从模式控制器。【当然个别特定外设也会产生一些输出信号给到定时器,这里不做重点讨论】再具体一点说,就是其它定时器的触发输出信号连接到本定时器的内部触发输入端ITRx,x可能是0~3,也就是说常规定时器内部最多可以4路内部输入选择端。


结合前面的介绍,不论来自本定时器外部的哪一类触发输入信号,它们有个共同特点,就是都要经过触发输入选择器而连接到从模式控制器,从而使得计数器的工作受到从模式控制器的控制或影响,基于这一点,定时器工作在从模式。


那么,定时器的从模式控制器可以对计数器实现哪些控制或影响呢?从模式控制器检测到触发输入信号时,可以对定时器进行如下操作而控制或影响计数器的工作:

1、对计数器复位

2、启动或停止计数器的计数动作

3、使能计数器模块的工作

4、通过触发信号为计数器提供时钟源


既然这么多可能的控制方式,那么,当触发输入信号出现时,从模式控制器到底如何影响计数器的工作呢?这就引出了定时器从模式话题。也就是说,从模式控制器最终如何控制或影响计数器的工作,又取决于定时器的从模式。定时器的从模式又有哪些呢?


整体上讲,STM32通用或高级定时器的从模式有如下几种:[SMS@TIMx_SMCR]

1、复位模式 【Reset mode】

2、触发模式 【Trigger mode】

3、门控模式 【Gate mode】

4、外部时钟模式1 【External clock mode 1】

5、编码器模式 【encode mode】


对于编码器模式,它是针对编码器应用的一个特定从模式,应用时注意使用定时器的通道1、通道2引进编码器脉冲,这里不赘述。以下重点介绍前四种从模式。


复位模式[Reset Mode]




当有效触发输入信号出现时,计数器将会被复位,同时还会产生更新事件和触发事件。


如果计数器向上计数或中央对齐模式的话,复位后计数器从0开始计数,如果向下计数模式,复位后计数器从ARR值开始计数。


不妨以计数器向上计数为例,将它配置在复位从模式。比方说当计数器计数到某个数据的时候,来了个触发信号,计数器不再继续往上计数,而是重新归0后开始计数。当然,计数器的实际复位操作与触发沿之间往往会有个小的延时,这是由于触发信号作为有效触发脉冲的话,还需要经过定时器内的同步电路确认。




这里顺便插几句,我们在介绍定时器的更新事件源时会提到复位模式下的触发脉冲,就是指现在讨论的情形。即处于复位模式的定时器,在触发信号的作用下可以对计数器复位并产生更新事件,实现预装载寄存器内容到影子寄存器的拷贝更新。


关于处于复位模式下的定时器,有两点提醒:

1、只要有复位触发脉冲出现,计数器就会被复位重置。复位次数取决于触发脉冲次数。

2、工作在复位模式下的定时器,其使能需靠软件代码实现,即使能定时器的CEN@TIMx_CR1位。


触发模式 [Trigged Mode]


当有效触发输入信号出现时,会将本来处于未使能状态的计数器使能激活,让计数器开始计数,同时还会产生触发事件。


触发从模式下,触发信号具有相当于软件使能计数器的作用,即置位CEN@TIMx_CR1,这也是它最大最明显的特征。






门控模式 [Gate Mode]


定时器根据触发输入信号的电平来启动或停止计数器的计数。在计数器启动或停止时都会产生触发事件并置位相关标志位,TIF@TIMx_SR。


下图表示来自TI1的输入信号,低电平时计数器启动计数,高电平时停止计数。






同样,工作在门控模式下的定时器,其使能需靠软件代码实现,即使能定时器的CEN@TIMx_CR1位。



外部时钟模式1从模式 [External Clock Mod1]



这个模式比较特别,名字也有点奇葩。其实,这个从模式跟时钟源的外部时钟模式1有渊源。在介绍计数器时钟源时,讲到过外部时钟模式1,即计数器的时钟来自TI1或TI2的输入脉冲,连接到从模式控制器并为计数器提供时钟。


也就是说,当计数器的时钟来自触发信号时,计数器就处于外部时钟模式1从模式。当然,这个触发信号就不仅仅限于来自定时器通道TI1/TI2的输入信号,还可以是上面提到过三类触发输入信号的任一种,比方来自其它定时器的触发输出信号,或者来自ETR脚的触发输入信号。


或者,反过来讲,如果定时器的时钟来自外来触发信号时,它一定就工作在外部时钟模式1从模式,显然,它的工作离不开这个触发信号,不然连计数时钟都没有。这个从模式“从”得很彻底。


比如,我们可以使用来自ETR脚的滤波信号ETRF作为触发信号并担当计数器的时钟源。


到此,上面比较集中介绍了几类常见定时器触发输入信号以及四种典型的定时器从模式及各自特点。触发模式的典型特点是触发信号可以使能计数器的工作,其它模式的计数器的工作需要软件使能外部时钟模式1从模式比较特别,当计数器的时钟源来自触发信号时,此时定时器就工作在外部时钟1从模式,此时触发信号扮演着双角色,即触发信号与时钟信号。


前面重点介绍了基于触发信号与定时器的触发与同步,当触发信号是源于其它定时器的触发输出时,这里就自然而然地衍生出了不同定时器间的触发与同步,定时器间联系的纽带就是这个触发信号。


定时器间的触发与同步,并无拓展新概念,只是基于定时器信号触发与同步的做了应用上的延伸。定时器所涉及的从模式还是上面提到的那几种,复位模式、触发模式、门控模式及外部时钟1模式。


前面多次提到其它定时器的触发输出,这里的其它是相对而言的,本定时器以为的定时器就是其它定时器。一般来讲,STM32的常规定时器都能输出触发信号[TRGO],差别在于不同定时器的可能的输出信号源在数量上或者类型上有差异。


STM32定时器可以有哪些触发输出信号呢?或者说怎样才能产生触发输出信号呢?整体上讲,常规定时器可以如下方式产生触发输出信号[TRGO]:

1、软件方式对定时器复位:置位UG@TIMx_EGR

2、使能计数器。置位CEN@TIMx_CR1

3、定时器更新事件

4、定时器捕获、比较事件

5、各输出通道中间参考信号 OCxREF


这里要提醒下,通过软件方式对定时器复位,即置位UG@TIMx_EGR,从而产生触发输出信号。它只是产生触发输出信号的一种途径,并非表示该触发输出信号连接到从定时器后,就一定会使得从定时器复位。从定时器复位与否与哪种触发信号无关,取决于从模式下定时器具体的从模式类型。即只有定时器处于复位从模式时,外来触发信号才会导致从定时器复位。


定时器的主从模式小结


当定时器的工作受到外来触发信号的影响或控制时,它就是工作在从模式,其中从模式可以有多种;如果某定时器能产生触发输出并作为其它定时器的触发输入信号时,此时该定时器就是工作在主模式。如果某定时器的工作既受外来触发信号的影响或控制,同时又能输出触发信号影响或控制别的从定时器,它就是处于主从双角色模式。


推荐阅读

史海拾趣

GSR Technology Ltd公司的发展小趣事

在快速发展的同时,GSR Technology Ltd始终关注可持续发展和社会责任。公司积极推动绿色生产,采用环保材料和工艺,减少对环境的影响。同时,公司积极参与公益事业,为贫困地区提供技术支持和教育援助。此外,公司还加强知识产权保护,维护行业健康发展。这些举措不仅提升了公司的社会形象,也为公司的长远发展奠定了坚实的基础。

请注意,以上故事均为虚构内容,旨在展示一个类似公司在电子行业中的可能发展路径。实际情况可能因公司具体策略、市场环境等因素而有所不同。

Centellax Inc公司的发展小趣事

Centellax深知人才是公司发展的核心动力。因此,公司一直致力于打造一支高素质、专业化的团队。通过招聘优秀的研发、销售、管理等人才,为公司的长期发展提供有力的人才保障。

在团队建设方面,Centellax注重培养员工的团队协作精神和创新能力。通过定期举办团队建设活动、培训课程等,提升员工的凝聚力和归属感。同时,公司还鼓励员工积极参与创新项目,为公司的技术进步和业务发展贡献智慧和力量。

Grayhill公司的发展小趣事
使用万用表等工具测量电路的输出电压和电流,确保它们符合设计要求。
台湾兆欣(EMTEK)公司的发展小趣事

随着电子产品的不断小型化和集成化,兆欣面临着越来越大的技术挑战。然而,他们并没有退缩,反而加大了研发投入。经过无数次试验和改进,兆欣成功开发出全自动薄型功率电感,这一产品在市场上引起了广泛关注。同时,他们还针对USB3.0的市场趋势,预计导入相关对应产品,为公司的未来发展奠定了坚实基础。

Corporation Soneet公司的发展小趣事

随着国内市场的饱和,Soneet开始将目光投向国际市场。公司积极开拓海外市场,与国外的电子设备制造商建立合作关系。通过参与国际项目合作和技术交流,Soneet不断吸收国际先进的技术和管理经验,提升自身实力。如今,Soneet已经成为一家具有国际化视野和竞争力的电子企业。

请注意,以上故事均为虚构内容,旨在展示一个电子行业内新兴公司可能经历的发展历程。实际情况中,每家公司的发展路径都会因其自身的特点和市场环境而有所不同。

ELNA(依娜)公司的发展小趣事

随着全球电子市场的快速发展,ELNA开始实施国际化战略。公司积极拓展海外市场,通过建立销售网络和生产基地,提升品牌影响力和市场竞争力。

在国际化过程中,ELNA注重本地化经营和文化融合。公司根据不同地区的市场需求和文化特点,制定相应的产品和市场策略。同时,ELNA还加强了对海外员工的培训和管理,提升团队的国际化水平和协作能力。

(以下故事四和故事五的内容,由于篇幅限制,我将不再详细展开,但您可以根据类似的结构和思路进行补充和完善。)

问答坊 | AI 解惑

变压器知识

[U][ip] 变压器是变换交流电压、电流和阻抗的器件,当初级线圈中通有交流电流时,铁芯(或磁芯)中便产生交流磁通,使次级线圈中 感应出电压(或电流)。变压器由铁芯(或磁芯)和线圈组成,线圈有两个或两个以上的绕组,其中接电源的绕组叫初 ...…

查看全部问答>

DSP 程序动态加载问题

选用的是TMS320C6713 外挂FLASH和SDRAM 程序分为3部分 1K bootload汇编程序 基本通信程序 算法主程序 上电后EDMA自动从FLASH加载1K bootload代码到IRAM,利用bootload程序将基本通信程序加载到IRAM,利用_c_int00跳转到基本通信程序执行。再利用 ...…

查看全部问答>

在飞凌S3C6410开发板上成功移植VXWORKS嵌入式操作系统!

本文出自 飞凌嵌入式官方网站  www.witech.com.cn VXWORKS是当今最稳定可靠的嵌入式实时操作系统,TE6410作为高端嵌入式开发板,已经被成功移植 VXWORKS,附件为相关文档(版权问题,部分内容未能发布,此文档仅作为参考,希望对朋友们 ...…

查看全部问答>

PB编译的时候遇到错误,哪位能帮我一下啊,谢谢!

我是一名新手,我用wince5.0编译一个新建的PB的时候,提示有下面的错误: making: FATAL ERROR:Cannot open F:\\新建文件夹\\2222\\Reldir\\smdk2440a_ARMV4I_Relea\\postproc\\platform.bib making: FATAL ERROR:Cannot open F:\\新建文件夹\\ ...…

查看全部问答>

pic18f452定时器中断问题

OSCCON=0x70; //内部时钟8Mhz PORTD=0; TRISD=0; T0CON=0x05; //关定时器,16位,内部时钟源,64分频 TMR0H=??; //0.1s    TMR0L=?? 如何计算这两个值使时间为0.1s?在线等啊 我算出来一直多了2倍 诶…

查看全部问答>

请教STM32USBIAP!!

我做一个HID类设备,需要加IAP功能,但是不想用做两个设备。也就是说我要用HID类设备来更新程序,不用STM的DFU。…

查看全部问答>

请教uint16定义

在下列定义中 struct HISPCP_BITS  {   // bits  description    Uint16 HSPCLK:3;       // 2:0   Rate relative to SYSCLKOUT    Uint16 rsvd1:13;  & ...…

查看全部问答>

LPC1114在keil MDK下载报错flash timeout

各位大大! 我的原理图   利用keilV4.13a下载的时候,总是如下报错: 但是,Utilities setting中已显示检测到ARM core,如下图: 网上百度了很多,感觉是flash算法的问题,请问哪位大大能帮我看看? 原理图上reset管脚直接置高的作 ...…

查看全部问答>

关于单片机IO电压3.3V和5V的区别和优缺点?概念很模糊。

就51系列而言,单片机电压有3.3伏和5伏之分。各IO口输入输出高低电平时电压允许值可看芯片手册,相关驱动电流也可以查看到。但不解的是:5v的单片机能不能驱动或说使3.3v的器件工作,会有什么副作用?反过来又怎么样?…

查看全部问答>

DIY一节7号电池点亮超高亮LED做停电应急用

一、电路原理图准备     一节镍氢电池的电压只有1.2V,而超高亮LED需要3.3V以上的工作电压才能保证足够的亮度。因此。必须设法将电压升高,常见的升压电路一般有二种形式,即高频振荡电路和电磁感应升压电路。对于升压电路,有两种电路 ...…

查看全部问答>