IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> STM32F4定时器介绍 -> 正文阅读

[嵌入式]STM32F4定时器介绍

1. 定时器的种类

从下面这个这个图看出,高级定时器相比于通用定时器,高级在其有“带可编程死区的互补输出”。这在H桥等电机控制场景中十分重要。

  • 如何理解死区?通常,大功率电机、变频器等,末端都是由大功率管、IGBT等元件组成的H桥或3相桥。每个桥的上半桥和下半桥是是绝对不能同时导通的,但高速的PWM驱动信号在达到功率元件的控制极时,往往会由于各种各样的原因产生延迟的效果,造成某个半桥元件在应该关断时没有关断,造成功率元件烧毁。死区就是在上半桥关断后,延迟一段时间再打开下半桥或在下半桥关断后,延迟一段时间再打开上半桥,从而避免功率元件烧毁。这段延迟时间就是死区。
    在这里插入图片描述
    在这里插入图片描述
    上图展示了带有可编程死区的互补输出的使用实例。

2. 定时器整体与时钟来源

在这里插入图片描述
如上图所示,定时器主要有几个部分组成:最上层的时钟部分,中间的时间计数部分,左下的输入捕获部分和右下的输出比较部分。其中时钟的来源很多,内部时钟是用的最多的,内部时钟一般是来自于APB总线的时钟;ETR(External Trigger)则是来自外部的时钟,ITRx是内部定时器级联的输出,可以用来制作级联定时器。定时器本身有一个预分频器PSC,是需要设置的重要参数之一。

  • 下图给出两个级联的实例。左下图使用了三个16bit的定时器组成了一个48bit定时器;而右图实例可以产生三个同步的计时器。很有意思的两个例子。
    在这里插入图片描述
    在这里插入图片描述
    上图展示了我所使用的STM32F411CEU6芯片的时钟配置,其最大主频是100Mhz,重点看右侧的APB1和APB2,每个APB总线都给定时器提供了单独的时钟即APBx Timer clocks。可以总结出一个规律,如果APB的分频系数是/2,则APB的Timer clock的分频系数是x2;如果APB的分频系数是/1,则APB的Timer clock的分频系数是x1。实现的效果就是,Timer的时钟都是100MHz。
    当然,还有一个小细节就是如何确定你的Timer是在哪个总线上的,这个可以通过查询参考手册的一般是第二章总线结构找到。比如本芯片的如下。
    在这里插入图片描述

3. 定时器的计数模式

三种计数模式:向上,向下,向上/向下。这个是比较好理解的,一个小点:

  • 计数值的最大值是由自动装载寄存器ARR的值决定的,比如向上计数,从0到ARR,就会产生溢出,从而产生更新事件,触发中断或DMA操作。
    在这里插入图片描述

  • 下图展示了STM32CubeMX中配置定时器需要设置的参数。其中,Perscaler是第二小节介绍的定时器时钟分频值。Counter Period则是ARR值。
    在这里插入图片描述

  • 其中,auto-reload prelod功能虽然没有使用,但是是一个有意思的功能,其表示如果中途修改了ARR的值,是本次比较的时候就生效呢,还是在下一个比较周期的时候再生效。为1,则代表下个周期再生效,也就是被buffer了一下;为0,则代表本周期就生效,即没有buffer。从上面的描述中的"buffer"字眼,可以知道ARR的值是有一个影子寄存器的!影子寄存器又是什么呢?
    在这里插入图片描述
    影子寄存器实际上才是起作用的那个寄存器,但是这个寄存器并没有开放给用户设置,我们能设置写入的是实际上是预装寄存器里的值,如果auto-reload prelod功能未开启,则预装寄存器的值直接被赋值给了影子寄存器;如果开启了,则一直到出现了一次Update Event(事件更新)后,预装寄存器的值才被赋值给了影子寄存器,从而影子寄存器在下次比较的时候才起作用。
    在这里插入图片描述
    在STM32的相关文档中,如果见到一个寄存器下面带有阴影,则说明其是一个带有影子寄存器的寄存器。
    在这里插入图片描述
    在这里插入图片描述
    在其他资料中,经常使用上面两张图来解释ARPE功能,图141是未开启的时候,可以看到在设置了ARR等于36以后,这个ARR在本次计数周期就生效了;而图152则是开启了ARPE功能,在ARR设置了36以后,并没有马上就起作用,还是原来的值即F5有效,直到本次事件更新后,ARR的值被写入影子寄存器,从而会在下个周期起作用。

4. PWM输出模式

在这里插入图片描述
PWM输出功能容易理解,其实就是在计数的基础上增加了一个比较器,设置其数值CCRx,在计数高于该比较值的时候输出高电平或低电平,在计数值低于该值的时候输出相反的电平。
那么在低于比较值的时候输出的是低电平还是高电平呢?取决于下图中相应寄存器的配置,TIMx_CCMR1中的OC1M[2:0]定义了输出比较的模式,如果是在PWM1模式下,低于比较值的时候会输出有效电平;如果是PWM2模式下,低于比较值时会输出无效电平。而有效电平是高还是低则是由TIMx_CCER寄存器中的CC1P位决定,该位为0,则有效电平是高电平;否则,有效电平是低电平。两个寄存器联合作用决定了输出波形长啥样。
在这里插入图片描述
在这里插入图片描述
在STM32CubeMX中配置的时候,关于PWM的有如上配置,其中Mode配置是PWM模式1还是模式2,CH Polarity配置通道的极性,经测试发现,这个极性的定义与上述 TIMx_CCER寄存器中的CC1P位 是相反的,即定义为High的话则有效电平是高电平;Low的时候有效电平是低电平,这一点尤其需要注意。Pulse值则是CCRx的值。
接下来,让我们再来看看几种有意思的PWM模式吧。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4. 输入捕获模式

输入捕获,稍后更新!

5. 参考

  • STM32L4-Timers Advanced-control, general-purpose and basic timers, Revision 2.0
  • stm32的互补输出和死区插入: https://blog.csdn.net/u011456016/article/details/70238923
  • 影子寄存器: https://zhuanlan.zhihu.com/p/349545023
  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-12-01 17:52:21  更:2021-12-01 17:52:42 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 10:31:18-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码