历史上的今天
返回首页

历史上的今天

今天是:2025年08月17日(星期日)

2018年08月17日 | STM32 通用定时器的一些概念解析

2018-08-17 来源:eefocus

STM32一共有8个定时器,其中定TIM1和TIM8为高级控制定时器,除了具有通用定时器的功能外,还兼具控制功能,不仅能够输出PWM还可以采集编码器,驱动各种电机的功能。而基本定时器TIM6和TIM7一般不用作普通定时器,一般会给别的定时器提供基准时钟信号。


对于通用定时器TIM2~TIM5,基本的功能就不描述了,主要是看这些通用定时器如何使用:



TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;

 

       

      TIM_DeInit(TIM2);                                           //重新将Timer设置为缺省值

       

      TIM_InternalClockConfig(TIM2);                              //采用内部时钟给TIM2提供时钟源      

      TIM_TimeBaseStructure.TIM_Prescaler = 36000 - 1;            //预分频系数为36000-1,这样计数器时钟为72MHz/36000 = 2kHz       

      TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;     //设置时钟分割      

      TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //设置计数器模式为向上计数模式       

      TIM_TimeBaseStructure.TIM_Period = 2000 - 1;           //设置计数溢出大小,每计2000个数就产生一个更新事件

      TIM_TimeBaseInit(TIM2,&TIM_TimeBaseStructure);         //将配置应用到TIM2中

      TIM_ClearFlag(TIM2, TIM_FLAG_Update);                  //清除溢出中断标志  

       

      TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE);                //开启TIM2的中断


  这里要分析一下几个概念,也是理解定时器的功能的核心概念,通用定时器有些类似于操作系统的定时器节拍,可以在定时器采用的时钟源的基础上再进行分频,然后再设定溢出大小,进而实现定时的功能,当然自动重载功能更不再话下。


预分频的功能是使定时器在APB时钟的基础上再一次分频,使其独立的运行。就像上述代码中举例,预分频系数设定为36000-1,则表示该定时器的 时钟频率就变成了72MHz/36000 = 2KHz,而“计数溢出大小”可以理解为自动装载数值,表示每隔x个计数溢出一次,可以产生1次中断,当然这个频率是经过预分频后的频率。


所以从上述的分析可知,定时器的定时时间计算为:


                           Tout = (TIM_Period+1)*(TIM_Prescaler+1)/72000000


在本程序案例中:Tout= 2000*36000/72000000=1s


需要注意的是,公式中的72000000的使用,是因为该定时器采用的时钟源为72MHz,如果配置成别的时钟源,则相应公式也应该改变。


另外TIM_ClockDivision为时钟分割,这个简单的讲,就是定时器的数字滤波功能,设置成默认即可。


推荐阅读

史海拾趣

Horn公司的发展小趣事

自1969年成立以来,Horn公司便致力于开发和生产切槽、侧铣和槽铣刀具。起初,公司聚焦于为小型机械加工企业提供高质量的工具解决方案。在创始人Paul Horn的领导下,公司迅速建立了技术团队,专注于刀具材料的研发与生产工艺的改进。这一时期,Horn公司凭借其出色的产品质量和定制化的服务,在行业内逐渐树立了良好的口碑。

国盛科技(BOCHEN)公司的发展小趣事

国盛科技(BOCHEN)的前身是成都国正电子有限责任公司,由周正军先生于1999年创立,初期便致力于电子元器件的制造。面对当时行业内的技术壁垒和专利限制,国盛科技坚持以创新驱动,不断加大研发投入,逐渐在电子元器件领域站稳脚跟。这一时期,公司通过引进和培养核心技术人员,逐步建立起一支具备国内一流研发水平的团队,为后续的快速发展奠定了坚实基础。

Digital Equipment Corp公司的发展小趣事

1957年,麻省理工学院的工程师肯尼斯·奥尔森(Kenneth Olsen)和哈伯特·安德森(Harlan Anderson)共同创立了Digital Equipment Corporation(DEC)。他们最初的目标是开发和生产创新的数字计算设备。凭借他们在数字技术领域的专业知识和独特视角,DEC推出了首批数字实验室和数字系统组件,这些产品在市场上取得了初步的成功,为DEC的发展奠定了坚实的基础。

ETA-USA公司的发展小趣事

ETA-USA一直注重技术创新和研发实力的提升。公司拥有一支高素质的研发团队和先进的研发设施,不断推出具有竞争力的新产品和解决方案。同时,ETA-USA还积极与高校、科研机构等合作,共同推动电子技术的创新和发展。

浙江东亚电子(DongYa)公司的发展小趣事

随着公司的发展,浙江东亚电子不断拓展其产业布局。除了传统的电力电子元件、分流器等产品外,公司还涉足新能源汽车、充电桩、变频器和储能等领域。特别是在新能源汽车和充电桩领域,公司紧跟国家“新基建”发展战略,推出了一系列具有竞争力的产品,为公司带来了新的增长点。

Beck IPC GmbH公司的发展小趣事

Beck IPC GmbH,一家在嵌入式通讯市场享有盛誉的公司,以其创新的IPC@CHIP技术为核心,为工业OEM提供了强大的支持。在某一时期,公司研发团队经过长时间的努力,成功开发出一款具有划时代意义的嵌入式控制模块。这款模块不仅性能卓越,而且稳定性极高,迅速获得了市场的广泛认可。多家知名工业设备制造商纷纷与Beck IPC建立合作关系,将其产品应用于各种高端设备中,从而推动了公司的快速发展。

问答坊 | AI 解惑

a <= c?d?1:0:1;这个语句到底是如何执行的?

always @ (posedge clk or posedge rst)         if (rst)             a …

查看全部问答>

功率合成器、阻抗变换器和方向耦合器的设计(第二讲)

This series of articles continues with an in-depth discussion of the classic Wilkinson divider, presenting typical methods of implementation, plus alternative methods that address specific problems …

查看全部问答>

板子要不要把元器件的数值也标上?

来自EEWORLD合作群:arm linux fpga 嵌入0(49900581) 群主:wangkj …

查看全部问答>

高手请教一下-GPRS模块如何检测sim卡已接入?

最近使用benq的m23,发现可以使用at$simtest来检测SIM卡是否已接入,返回1代表检测到,返回0代表没有检测到sim卡。现在我要使用TR800,可是没看到那个at$simtest指令,不知道它怎么检测sim卡插入了呢?还有其他模块怎么检测sim卡啊? 另外共享一下 ...…

查看全部问答>

LPC1114 ADC 基准电压

请教:1114的AD功能基准电压只能选择VCC(即给1114供电的电压)? 现在在做一个便携式的设备,锂电池供电(锂电的工作电压…

查看全部问答>

[hanker M4开发板试用]我的助手,我的虚拟串口 ——stellaris USB CDC应用

最后的试用期限就要到了。这两天也抓紧调试了USB库函数。在eeworld论坛上,小川 版主的帖子陪我走过这一周。现在将本周调试的虚拟串口程序与网友们分享。 摘要 本文首先简要介绍了Stellaris USB库的基本使用,在USB库函数下编写了虚拟串口程 ...…

查看全部问答>

关于定时器中断

#include \"msp430g2553.h\" void delay(void); // Software delay void main(void) { WDTCTL = WDTPW + WDTHOLD; // Stop WDT ADC10CTL1 = CONSEQ_2; // Repeat single chan ...…

查看全部问答>

坦克打靶 坦克打靶 急求程序 51的

2010年四川电子设计大赛题目  坦克打靶  急求…

查看全部问答>

晒WEBENCH设计的过程+电源架构设计案例

电源架构当然是要选择Power Architecture设计电源方案首先选择输入电源,和输出负载所需的电压和电流,可以添加多个电源和对应每个电源有多个负载 我这里就只用一个电源,一个负载来展示。 配置完参数后,提交所有的参数需求,让Webench后台选择 ...…

查看全部问答>