历史上的今天
返回首页

历史上的今天

今天是:2024年12月06日(星期五)

正在发生

2021年12月06日 | 正点原子STM32学习笔记——通用定时器基本原理

2021-12-06 来源:eefocus

以下描述适用于整个STM32FM10xxx系列。

本文依据《STM32中文参考手册_V10》

STM32 通用定时器简介


STM32 的通用定时器是一个通过可编程预分频器(PSC)驱动的 16 位自动装载计数器(CNT)构成。STM32 的通用定时器可以被用于:测量输入信号的脉冲长度(输入捕获)或者产生输出波形(输出比较和 PWM)等。 使用定时器预分频器和 RCC 时钟控制器预分频器,脉冲长度和波形周期可以在几个微秒到几个毫秒间调整。STM32 的每个通用定时器都是完全独立的,没有互相共享的任何资源。


STM3 的通用 TIMx (TIM2、TIM3、TIM4 和 TIM5)定时器功能包括:

1)16 位向上、向下、向上/向下自动装载计数器(TIMx_CNT)。

2)16 位可编程(可以实时修改)预分频器(TIMx_PSC),计数器时钟频率的分频系数为 1~65535 之间的任意数值。

3)4 个独立通道(TIMx_CH1~4),这些通道可以用来作为:

A.输入捕获

B.输出比较

C.PWM 生成(边缘或中间对齐模式)

D.单脉冲模式输出

4)可使用外部信号(TIMx_ETR)控制定时器和定时器互连(可以用 1 个定时器控制另外

一个定时器)的同步电路。

5)如下事件发生时产生中断/DMA:

A.更新:计数器向上溢出/向下溢出,计数器初始化(通过软件或者内部/外部触发)

B.触发事件(计数器启动、停止、初始化或者由内部/外部触发计数)

C.输入捕获

D.输出比较

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

F.触发输入作为外部时钟或者按周期的电流管理

在这里插入图片描述

从图中可以看出,定时器的框图是很复杂的,所以学习的时候应该分成几个部分来学。


第一部分,时钟生成:产生一个时钟,作为时基单元的输入(图中红线)

在这里插入图片描述

图中产生时钟的方式有四种:

①由内部时钟产生,如上图的“来自RCC的TIMxCLK”。此种应用的比较多。

②由外部引脚输入,上图的TIMx_ETR,可以从STM32F103RCT6.PDF中查找对应的引脚。这种方法只适用定时器2,3,4,定时器5没有这样的功能。

③来自ITR0~ITR1(内部触发输入口),定时器的级联,是来自其它的定时器,其它定时器的TRGO(如上图)连接到ITR0 ~ ITR1,自己的TRGO也可以连接到其它定时器的ITR0 ~ ITR1。

④来自TI1F_ED、TI1FP1、TI1FP2(见上图),这三个来自于下图中的“输入滤波器和边沿检测器”,而“输入滤波器和边沿检测器”来自于TI1,TI1来自于外部通道(TIMx_CH1等)。


第二部分,输入捕获(可用于计算脉宽,参考输入捕获实验):

在这里插入图片描述

第三部分,时基单元(定时器中断实验):

在这里插入图片描述

任何一个定时器都有一个时基单元,CK_PSC信号进行一个预分频(除法运算)产生CK_CNT时钟,这个时钟才是计数器(CNT)最终的时钟。CNT在时钟的控制下可以向上或向下计数(可以通过配置相应寄存器来决定是向上还是向下计数),如CNT从0向上计数到重装载值会产生一个溢出事件,事件可以触发中断或者DMA请求。


可编程通用定时器的主要部分是一个16位计数器和与其相关的自动装载寄存器。这个计数器可以向上计数、向下计数或者向上向下双向计数。此计数器时钟由预分频器分频得到。计数器(CNT)、自动装载寄存器(ARR)和预分频器寄存器(PSC)可以由软件读写,在计数器运行时仍可以读写。

时基单元包含:

● 计数器寄存器(TIMx_CNT)

● 预分频器寄存器 (TIMx_PSC)

● 自动装载寄存器 (TIMx_ARR)

自动装载寄存器是预先装载的,写或读自动重装载寄存器将访问预装载寄存器。根据在TIMx_CR1寄存器中的自动装载预装载使能位(ARPE)的设置,预装载寄存器的内容被立即或在每次的更新事件UEV时传送到影子寄存器。当计数器达到溢出条件(向下计数时的下溢条件)并当

TIMx_CR1寄存器中的UDIS位等于’0’时,产生更新事件。更新事件也可以由软件产生。


在图中可以看到自动重装载寄存器有一个阴影,有阴影的寄存器,表示在物理上这个寄存器对应2个寄存器,一个是程序员可以写入或读出的寄存器,称为preload register(预装载寄存器),另一个是程序员看不见的、但在操作中真正起作用的寄存器,称为shadow register(影子寄存器)。

关于影子寄存器,可以参考网上的一名博主的博客:

首先转载: STM32定时器的预装载寄存器与影子寄存器之间的关系


计数器由预分频器的时钟输出CK_CNT驱动,仅当设置了计数器TIMx_CR1寄存器中的计数器使能位(CEN)时,CK_CNT才有效。

注:真正的计数器使能信号CNT_EN是在CEN的一个时钟周期后被设置。


预分频器描述 :

预分频器可以将计数器的时钟频率按1到65536之间的任意值分频。它是基于一个(在TIMx_PSC寄存器中的)16位寄存器控制的16位计数器。这个控制寄存器带有缓冲器,它能够在工作时被改变。新的预分频器参数在下一次更新事件到来时被采用。

在这里插入图片描述

第四部分,输出比较(PWM输出):

在这里插入图片描述

由于定时器的内容比较多,这里简单的介绍下基本原理。

推荐阅读

史海拾趣

Applied Micro Circuits (MACOM)公司的发展小趣事

在某一时期,MACOM宣布收购Applied Micro Circuits Corp.,这一举动标志着公司在业务领域上的又一次重要扩张。收购完成后,MACOM迅速进行了业务分拆,将不感兴趣的服务器芯片业务与自身的主营业务进行剥离。这一战略调整使得MACOM能够更专注于自身擅长的领域,同时也为被剥离的业务提供了更好的发展机会。

Allied Wire & Cable Inc公司的发展小趣事

随着公司业务的不断发展,Allied公司开始积极拓展产品线,逐渐涵盖了多种类型的电线电缆产品,满足了不同客户的需求。同时,公司还积极开拓新的市场领域,将产品推广至全国范围,并逐渐拓展至国际市场。通过不断的产品创新和市场拓展,Allied公司的业务规模逐渐扩大,市场份额也稳步提升。

Alpha & Omega Semiconductor(万国半导体)公司的发展小趣事

为了保持市场竞争力,Allied公司始终注重技术升级和品质提升。公司投入大量资金引进先进的生产设备和技术,不断提高产品的技术含量和附加值。同时,公司还建立了严格的质量管理体系,从原材料采购到产品出厂的每一个环节都进行严格把控,确保产品的品质和性能达到最高标准。

德力西(DELIXI)公司的发展小趣事

1984年,胡成中偕其弟胡成国等人在浙江省乐清市创立了“乐清县求精开关厂”,这便是德力西的前身。当时,企业仅有3位股东,5万元的资本,8名员工,以及单一的热继电器产品。凭借“以质取胜”的经营理念和灵活的机制,德力西在温州市电器行业中逐渐崭露头角。

淩志比高公司的发展小趣事

在电子行业的浪潮中,淩志比高公司由几位充满激情的创业者创立。创业初期,公司面临着资金短缺、市场竞争激烈等挑战。然而,凭借对技术的深刻理解和敏锐的市场洞察力,淩志比高成功开发出一款具有创新性的电子产品,迅速在市场上获得了一席之地。

EF Johnson Technologies Inc公司的发展小趣事

面对日益激烈的国内市场竞争,EF Johnson公司制定了国际化战略,将目光投向了海外市场。公司通过与国外代理商的合作,成功将产品打入国际市场,并获得了良好的口碑。同时,公司还积极参与国际展会和技术交流活动,不断提升品牌影响力。在国际化战略的推动下,EF Johnson的海外市场份额逐步扩大,成为一家具有全球影响力的电子通信企业。

问答坊 | AI 解惑

有个电路,不知道为何效果不太好,短路保护的,

来自EEWORLD合作群:499581  群主:wangkj 上电时不能自动导通…

查看全部问答>

基于StrongARM嵌入式Linux系统下的USB通信实现.pdf

基于StrongARM嵌入式Linux系统下的USB通信实现.pdf…

查看全部问答>

初学 wince 请教大家一些问题

初学wince  请教大家一些问题 关于wince应用程序开发 1.wince应用程序开发常用IED有哪些 2.学习wince 入门书籍都有哪些 …

查看全部问答>

急!哪位好心大侠帮忙!W77E58/w77e058双串口多机通讯遇到难题啦!

急!哪位好心大侠帮忙!W77E58/w77e058双串口多机通讯遇到难题啦! 我用的是一片W77E58/w77e058做为主机,通过分别寻址多台从机(从机也是W77E58/w77e058),与他们单独通讯(即主机一一号从机通讯完了,再与2号从机通讯,。。。。)。看资料好久 ...…

查看全部问答>

舵机抖动问题

现在要帮老师完成一个机器人的项目. 我是用一个5v电池去控制单片机,4个舵机,4个直流电机,不过不断地出现程序跑飞和舵机抖动问题. 电源处只用了一个470uf的电容滤波. 我想请问有办法可以只用一个电源去控制这么多电机而不会有程序跑飞和舵机抖动 ...…

查看全部问答>

51串行口 工作方式0问题

#include sbit d1=P1^1;                                //接有发光二极管,低电平时灯亮 sbit rx=P3^0; void delayms(unsigned int x)      & ...…

查看全部问答>

****香版主请教USART1串口与DMA-5的一点疑问

串口使用DMA接收。手册上有这么说明:溢出错误如果RXNE 还没有被复位,又接收到一个字符,则发生溢出错误。数据只有当RXNE 位被清零后才能从移位寄存器转移到RDR 寄存器。RXNE 标记是接收到每个字节后被置位的。如果下一 ...…

查看全部问答>

求教一个stm8s105的怪异问题

程序下载后,设备可正常运行,但有时设备受到一定冲击(如掉到地上或大一些的脉冲干扰)后,设备就无法正常工作了(设备可正常启动,就是部分功能不好用了)!最怪异的是,什么都不动,就是重新下一遍程序,设备马上恢复正常!!!求教各位看官这是 ...…

查看全部问答>

【课后笔记】LaunchPad第二讲之CPU与基本时钟模块

第2讲之      CPU与基本时钟模块   这里只列出最后的实验(具体见附件)        …

查看全部问答>

职场发展,你如何避免少走弯路?

  你有没有这种感觉,当你极目远眺的下一秒,便开始为脚下的路迷茫;期待腾飞的翅膀,在现实的面前总有点不知所措。那么,怎么样找到你自己倾心想为之奋斗的事业?又如何去成功规划乃至实现它,而使自己少走弯路,截弯取直呢?独之秀职业顾问给了 ...…

查看全部问答>