历史上的今天
返回首页

历史上的今天

今天是:2025年02月07日(星期五)

正在发生

2020年02月07日 | 基于STM32F103系列单片机的11个定时器解析

2020-02-07 来源:elecfans

STM32F103系列的单片机一共有11个定时器,其中:

2个高级定时器

4个普通定时器

2个基本定时器

2个看门狗定时器

1个系统嘀嗒定时器


除去看门狗定时器和系统滴答定时器的八个定时器列表;

基于STM32F103系列单片机的11个定时器解析

8个定时器分成3个组;

TIM1和TIM8是高级定时器

TIM2-TIM5是通用定时器

TIM6和TIM7是基本的定时器

这8个定时器都是16位的,它们的计数器的类型除了基本定时器TIM6和TIM7都支持向上,向下,向上/向下这3种计数模式


计数器三种计数模式

向上计数模式:从0开始,计到arr预设值,产生溢出事件,返回重新计时

向下计数模式:从arr预设值开始,计到0,产生溢出事件,返回重新计时

中央对齐模式:从0开始向上计数,计到arr产生溢出事件,然后向下计数,计数到1以后,又产生溢出,然后再从0开始向上计数。(此种技术方法也可叫向上/向下计数)


基本定时器(TIM6,TIM7)的主要功能:

只有最基本的定时功能,。基本定时器TIM6和TIM7各包含一个16位自动装载计数器,由各自的可编程预分频器驱动

通用定时器(TIM2~TIM5)的主要功能:

除了基本的定时器的功能外,还具有测量输入信号的脉冲长度( 输入捕获) 或者产生输出波形( 输出比较和PWM)

高级定时器(TIM1,TIM8)的主要功能:

高级定时器不但具有基本,通用定时器的所有的功能,还具有控制交直流电动机所有的功能,你比如它可以输出6路互补带死区的信号,刹车功能等等


通用定时器的时钟来源;

a:内部时钟(CK_INT)

b:外部时钟模式1:外部输入脚(TIx)

c:外部时钟模式2:外部触发输入(ETR)

d:内部触发输入(ITRx):使用一个定时器作为另一个定时器的预分频器


通用定时期内部时钟的产生:

从截图可以看到通用定时器(TIM2-7)的时钟不是直接来自APB1,而是通过APB1的预分频器以后才到达定时器模块。


当APB1的预分频器系数为1时,这个倍频器就不起作用了,定时器的时钟频率等于APB1的频率;

当APB1的预分频系数为其它数值(即预分频系数为2、4、8或16)时,这个倍频器起作用,定时器的时钟频率等于APB1时钟频率的两倍。


自动装在寄存器arr值的计算:

Tout= ((arr+1)*(psc+1))/Tclk;

Tclk:TIM3的输入时钟频率(单位为Mhz)。

Tout:TIM3溢出时间(单位为us)。

计时1S,输入时钟频率为72MHz,加入PSC预分频器的值为35999,那么:

((1+psc )/72M)*(1+arr )=((1+35999)/72M)*(1+arr)=1秒

则可计算得出自动窗装载寄存器arr=1999

通用定时器PWM工作原理

以PWM模式2,定时器3向上计数,有效电平是高电平,定时器3的第3个PWM通道为例:

定时器3的第3个PWM通道对应是PB0这引脚,三角顶点的值就是TIM3_ARR寄存器的值,上图这条红线的值就TIM3_CCR3

当定时器3的计数器(TIM3_CNT)刚开始计数的时候是小于捕获/比较寄存器(TIM3_CCR3)的值,此时PB0输出低电平,随着计数器(TIM3_CNT)值慢慢的增加,当计数器(TIM3_CNT)大于捕获/比较寄存器(TIM3_CCR3)的值时,这时PB0电平就会翻转,输出高电平,计数器(TIM3_CNT)的值继续增加,当TIM3_CNT=TIM3_ARR的值时,TIM3_CNT重新回到0继续计数,PB0电平翻转,输出低电平,此时一个完整的PWM信号就诞生了。


PWM输出模式;

STM32的PWM输出有两种模式:

模式1和模式2,由TIMx_CCMRx寄存器中的OCxM位确定的(“110”为模式1,“111”为模式2)。区别如下:

110:PWM模式1,在向上计数时,一旦TIMx_CNT

在向下计数时,一旦TIMx_CNT》TIMx_CCR1时通道1为无效电平(OC1REF=0),否则为有效电平(OC1REF=1)。

111:PWM模式2-在向上计数时,一旦TIMx_CNTTIMx_CCR1时通道1为有效电平,否则为无效电平。


由以上可知:

模式1和模式2正好互补,互为相反,所以在运用起来差别也并不太大。而从计数模式上来看,PWM也和TIMx在作定时器时一样,也有向上计数模式、向下计数模式和中心对齐模式

PWM的输出管脚:

不同的TIMx输出的引脚是不同(此处设计管脚重映射)

TIM3复用功能重映射:

注:重映射是为了PCB的设计方便。值得一提的是,其分为部分映射和全部映射

PWM输出频率的计算:

PWM输出的是一个方波信号,信号的频率是由TIMx的时钟频率和TIMx_ARR这个寄存器所决定的输出信号的占空比则是由TIMx_CRRx寄存器确:

占空比=(TIMx_CRRx/TIMx_ARR)*100%

PWM频率的计算公式为:

其中

F就是PWM输出的频率,单位是:HZ;

ARR就是自动重装载寄存器(TIMx_ARR);

PSC 就是预分频器(TIMx_PSC);

72M就是系统的频率;

STM32 高级定时器PWM的输出

一路带死区时间的互补PWM的波形图

STM32F103VC这款单片机一共有2个高级定时器TIM1和TIM8

这2个高级定时器都可以同时产生3路互补带死区时间的PWM信号和一路单独的PWM信号,

具有刹车输入功能,在紧急的情况下这个刹车功能可以切断PWM信号的输出

还具有支持针对定位的增量(正交)编码器和霍尔传感器电路

高级控制定时器(TIM1 和TIM8) 由一个16位的自动装载计数器组成,它由一个可编程的预分频器驱动

它适合多种用途,包含测量输入信号的脉冲宽度( 输入捕获) ,或者产生输出波形(输出比较、PWM、嵌入死区时间的互补PWM等)。


使用定时器预分频器和RCC时钟控制预分频器,可以实现脉冲宽度和波形周期从几个微秒到几个毫秒的调节。


高级控制定时器(TIM1 和TIM8) 和通用定时器(TIMx) 是完全独立的,它们不共享任何资源死区时间


H桥电路为避免由于关断延迟效应造成上下桥臂直通,有必要设置死区时间死区时间可有效地避免延迟效应所造成的一个桥臂未完全关断,而另一桥臂又处于导通状态,避免直通炸开关管。


死区时间越大,电路的工作也就越可靠,但会带来输出波形的失真以及降低输出效率。死区时间小,输出波形要好一些,但是会降低系统的可靠性,一般这个死区时间设置为us级元器件死区时间是不可以改变的,它主要是取决于元器件的制作工艺和材料!


原则上死区时间当然越小越好。设置死区时间的目的,其实说白了就是为了电路的安全。最佳的设置方法是:在保证安全的前提下,设置的死区时间越小越好。以不炸功率管、输出不短路为目的。


STM32死区时间探究设置寄存器:就是刹车和死区控制寄存器(TIMx_BDTR)

这个寄存器的第0—7位,这8个位就是用来设置死区时间的,使用如下:

以TIM1为例说明其频率是如何产生的。

定时器1适中产生路线:

系统时钟-》 AHB预分频 -》 APB2预分频 –》 TIM1倍频器–》 产生TIM1的时钟系统流程图看可以看出,要想知道TIM1的时钟,就的知道系统时钟,AHB预分频器的值,还有APB2预分频器的值,只要知道了这几个值,即可算出TIM1的时钟频率?


这些值从何来,在“SystemInit()”这个时钟的初始化函数中已经给我们答案了,在这个函数中设置的系统时钟是72MZ,AHB预分频器和APB2预分频器值都是设置为1,由此可算出:TIM1时钟频率:72MHZ了,TDTS=1/72MHZ=13.89nsTdtg死区时间步进值,它的值是定时器的周期乘以相应的数字得到的

下面看看官方给的公式如何使用,如下:DTG[7:5]=0xx=》DT=DTG[6:0]×Tdtg,Tdtg=TDTS

首先由DTG[7:5]=0xx可以知道的是:DTG的第7位必须为0,剩余的0~6这7位可配置死区时间,假如TIM1的时钟为72M的话,那么由公式Tdtg=TDTS可计算出:TDTS=1/72MHZ=13.89ns。

有了这个值,然后通过公式DT=DTG[6:0]×Tdtg即可计算出DT的值。

如果DTG的第0~6位均为0的话,DT=0

如果DTG的第0~6位均为1的话,DT=127*13.89ns=1764ns

如果TIM1的时钟为72M的话,公式1可设置的死区时间0~1764ns,也就是说:如果你的项目需要输出的PWM信号要求的死区时间是0——1764ns的时候你就可以用公式1同样可计算出4个公式的死去区间,如下:

公式1:DT=0~1764ns

公式2:DT=1777.9ns~3528.88ns

公式3:DT=3555.84ns~7000.56ns

公式4:DT=7111.68ns~14001.12ns

死区时间的设置:

假如我们设计了一个项目要求输出的PWM信号中加入一个3us的死区时间因为3us这个值在第二个公式决定的死区范围之内所以选择第二个公式。3000/(13.89*2)=108,所以DTG[5:0]=108-64=44所以DTG=127+44+32=203=0XCB,TIM1-》BDTR“=0Xcb

这里为什么要在加上一个32那?在公式2中DTG的第5位是一个X,也就是说这一位可以设置为高电平,也可以设置为低电平,在这里我们将这一位设置为了高电平,所有要在加上一个32.如此而已!

推荐阅读

史海拾趣

Barkston Plastics Engineering Ltd.公司的发展小趣事

在电子行业的初创时期,Barkston Plastics Engineering Ltd.以其创新性的塑料材料应用技术在市场上崭露头角。公司研发了一种具有优异绝缘性能的塑料材料,成功应用于电视机外壳的生产,大大提高了产品的安全性和耐用性。这一技术突破为Barkston赢得了首批重要的客户,并奠定了公司在电子行业的基础。

GigPeak公司的发展小趣事

为了进一步增强市场地位和扩大产品线,GigPeak在2010年实施了一项重要的并购战略。公司成功收购了另一家在光纤通信领域具有深厚技术积累的企业,这次并购不仅为GigPeak带来了先进的产品线和研发资源,还显著提升了其在全球市场的份额。通过整合双方的优势资源,GigPeak在光纤通信领域的技术实力和市场份额均实现了质的飞跃。

Crosspoint Solutions公司的发展小趣事

在电子行业中,产品质量是企业生存和发展的关键。Crosspoint Solutions公司深知这一点,因此始终将品质管理放在首位。公司建立了严格的质量检测体系,从原材料采购到产品出厂的每一个环节都进行严密把控。这种对品质的执着追求赢得了客户的信任和好评,使公司在市场上树立了良好的口碑。

Focus公司的发展小趣事

Focus科技股份有限公司(虚构)在深耕外贸电商领域的同时,也敏锐地捕捉到了教育与医疗行业的数字化转型机遇。公司利用自身在互联网技术和大数据分析方面的优势,研发了智慧教育平台和移动医疗应用。智慧教育平台通过提供个性化学习资源和在线互动教学服务,有效提升了教育资源的利用率和学生的学习效果;移动医疗应用则通过远程医疗咨询、健康管理等功能,为用户提供了便捷的医疗服务体验。这些跨界融合的产品不仅丰富了公司的业务线,也进一步提升了公司的品牌影响力和市场竞争力。

ECM [ECM Electronics Limited.]公司的发展小趣事

ECM Electronics Limited.自创立之初,就注重技术创新。公司投入大量研发资金,专注于开发高效、节能的电子产品。通过不断的技术迭代和产品创新,ECM成功推出了一系列具有竞争力的产品,逐渐在市场上建立了良好的口碑。同时,公司还积极与高校和科研机构合作,引进先进技术,为公司的持续发展提供了强大的技术支撑。

巨盛电子(Chesen)公司的发展小趣事

巨盛电子(Chesen)自创立之初,就坚持将技术创新作为公司的核心竞争力。在电子行业迅速发展的背景下,公司投入大量资源进行研发,成功推出了一系列具有领先技术水平的电子产品。这些产品不仅满足了市场对于高品质、高性能电子产品的需求,还通过创新功能赢得了消费者的青睐。巨盛电子凭借技术创新,逐渐在电子行业中崭露头角,成为市场的领导者。

问答坊 | AI 解惑

摩托罗拉电子设计大赛优秀作品(八)

本帖最后由 paulhyde 于 2014-9-15 08:54 编辑  …

查看全部问答>

与80后的朋友们闲聊

在这里玩的,很大一部分应该是像我这样的80年代生人。网络语言曰:80后。 这一拨人被打上了很多标签,用Google搜索的自动联想功能可以看到,往往和教育、就业、房价等社会敏感的问题联系起来……这是为什么呢? http://www.labournet.c ...…

查看全部问答>

SPI 程序问题请教!

SPI0是主机,SPI1是从机 void SPI1_Isr (void){    RcvData = SSP1DR;                          ...…

查看全部问答>

请教高手,wince5.0不用EBOOT和NBOOT,如何在flash驱动里面实现分区呢?

我是用UBOOT事先引导的,那么我想实现nand flash分区的话,可不可以在flash的驱动里面实现分区呢? 如果可以的话,那么我该怎么做呢,要改哪些函数呢?请高手指点啊!…

查看全部问答>

WinCE 4.2 中 File Server 的问题

看到别人在 WinCE 4.2 中开启了 File Server ,于是我也想试试看。 1、为操作系统加载了 File Server 组件; 2、配置了注册表项; 运行操作系统后,发现 smbserver.dll 文件已经在 \\Windows 文件夹中了,但是在 PC 机中还是无法用 \\\\Windows ...…

查看全部问答>

OnEraseBkgnd内存泄漏

用VS2005创建的PPT2003的对话框程序,用向导添加WM_ERASEBKGND映射。 运行后每重画一次都有80字节内存泄漏。直至死机。OnEraseBkgnd内存泄漏…

查看全部问答>

cadence spb 16.2 pcb入门中文学习教程

cadence spb 16.2 pcb入门学习的朋友们要注意了!!…

查看全部问答>

STM32的优势主要有哪些?

                                 STM32的优势主要有哪些?…

查看全部问答>

急招电子标签工程师

急招电子标签工程师 具体要求: 1、大专以上学历,有两年相关工作经验 1、了解RFID产业方向,熟悉RFID市场及产品厂商; 2、 至少两年以上电子标签行业工作经验,对RFID/DR/RF/EAS產品有清晰理解; 3、掌握RFID系统原理、结构及技术标准等相关 ...…

查看全部问答>

一块产品的开发流程和细节的问题

我是新人,想请教一个问题,如果推出一款产品一般的项目步骤是怎么样的?  是不是一开始要制作样机,然后测试样机,再批量化生产?有关细节就是: 1、电子元器件怎么样合理的采购 2、PCB打样一般找什么样的厂家 3、样机完成测试后,产 ...…

查看全部问答>