从0开始的STM32学习之旅之定时器3:高级定时器

目录

重复计数器

输出比较

断路功能

输出比较模式

互补输出带死区控制

死区时间计算

PWM 输入模式


高级定时器的框图和通用定时器框图很类似,只是添加了其它的一些功能,如:重复计数 器、带死区控制的互补输出通道、断路输入等

可以认为高级定时器是对通用定时器的一次扩展。下面来看看不同之处:

重复计数器

在 F1 系列中,高级定时器TIM1 和 TIM8 都有重复计数器。下面来介绍一下重复计数器有什么作用?在学习基本定时器和通用定时器的时候,我们知道定时器发生上溢或者下溢时,会直接生成更新事件。但是有重复计数器的定时器并不完全是这样的,定时器每次发生上溢或下溢时,重复计数器的值会减一,当重复计数器的值为 0 时,再发生一次上溢或者下溢才会生成定时器更新事件。如果我们设置重复计数器寄存器 RCR 的值为N,那么更新事件将在定时器发生 N+1 次上溢或下溢时发生。 这里需要注意的是重复计数器寄存器是具有影子寄存器的,所以 RCR 寄存器只是起缓冲的作用。RCR 寄存器的值会在更新事件发生时,被转移至其影子寄存器中,从而真正生效。 重复计数器的特性,在控制生成 PWM 信号时很有用,后面会有相应的实验。

输出比较

高级定时器输出比较部分和通用定时器相比,多了带死区控制的互补输出功能。TIMx_CH1N、TIMx_CH2N 和 TIMx_CH3N 分别是定时器通道 1、通道 2 和通道 3的互补输出通道,通道 4 是没有互补输出通道的。DTG 是死区发生器,死区时间由 DTG[7:0]位来配置。如果不使用互补通道和死区时间控制,那么高级定时器 TIM1 和 TIM8 和通用定时器的输出比较部分使用方法基本一样,只是要注意MOE 位得置 1 定时器才能输出。 如果使用互补通道,那么就有一定的区别了。

断路功能

断路功能也称刹车功能,一般用于电机控制的刹车。F1 系列有一个断路通道,断路源可以是刹车输入引脚(TIMx_BKIN),也可以是一个时钟失败事件。时钟失败事件由复位时钟控制器中的时钟安全系统产生。系统复位后,断路功能默认被禁止,MOE 位为低。 使能断路功能的方法:将 TIMx_BDTR 的位 BKE 置 1。断路输入引脚 TIMx_BKIN 的输入有效电平可通过 TIMx_BDTR 寄存器的位 BKP 设置。 使能刹车功能后:由TIMx_BDTR 的 MOE、OSSI、OSSR 位,TIMx_CR2 的OISx、OISxN位,TIMx_CCER 的CCxE、CCxNE 位控制 OCx 和 OCxN 输出状态。无论何时,OCx 和OCxN输出都不能同时处在有效电平。 当发生断路输入后,会怎么样?

  • MOE 位被异步地清零,OCx 和 OCxN 为无效、空闲或复位状态(由OSSI 位选择)。

  • OCx 和 OCxN 的状态:由相关控制位状态决定,当使用互补输出时:根据情况自动控制输出电平。

  • BIF 位置 1,如果使能了 BIE 位,还会产生刹车中断;如果使能了 TDE 位,会产生DMA请求。

  • 如果AOE 位置 1,在下一个 更新事件UEV 时,MOE 位被自动置 1。 高级定时器框图部分就简单介绍到这里,下面通过实际的实验来学习高级定时器。

输出比较模式

输出比较模式下翻转功能作用是:当计数器的值等于捕获/比较寄存器影子寄存器的值时,OC1REF 发生翻转,进而控制通道输出(OCx)翻转。通过翻转功能实现输出 PWM 的具体原理如下:PWM 频率由自动重载寄存器(TIMx_ARR)的值决定,在这个过程中,只要自动重载寄存器的值不变,那么PWM 占空比就固定为50%。我们可以通过捕获/比较寄存器(TIMx_CCRx)的值改变 PWM 的相位。

互补输出带死区控制

上图中,CH1 输出黄色的 PWM,它的互补通道 CH1N 输出绿色的 PWM。通过对比,可以知道这两个 PWM 刚好是反过来的,CH1 的PWM 为高电平期间,CH1N 的 PWM 则是低电平,反之亦然,这就是互补输出。

上图中,CH1 输出的 PWM 和CH1N 输出的 PWM 在高低电平转换间,插入了一段时间才实现互补输出。这段时间称为死区时间,可以通过DTG[7:0]位配置控制死区时间的长度,后面会详细讲解如何配置死区时间。上图中,箭头指出的两段死区时间的长度是一样的,因为都是由同一个死区发生器产生。

死区时间计算

下面来看一下定时器的死区时间是怎么计算并设置的?死区时间是由TIMx_CR1 寄存器的CKD[1:0]位和 TIMx_BDTR 寄存器的 DTG[7:0]位来设置

死区时间计算分三步走: 第一步:通过 CKD[1:0]位确定 tDTS。根据 CKD[1:0]位的描述,可以得到下面的式子:
tDTS = 2^{𝐶𝐾𝐷[1: 0]}/Tclk

其中:

  • CKD[1:0]:CKD[1:0]位设置的值。

  • Tclk:定时器的时钟源频率(单位为 MHz)。

PWM 输入模式

  1. 第一,确定定时器时钟源。本实验中我们使用内部时钟(CK_INT),F1 系列高级定时器挂载在 APB2 总线上,按照 sys_stm32_clock_init 函数的配置,定时器时钟频率等于APB2 总线时钟频率,即 72MHz。计数器的计数频率确定了测量的精度。

  2. 第二,确定 PWM 输入的通道。PWM 输入模式下测量 PWM,PWM 信号输入只能从通道1(CH1)或者通道 2(CH2)输入。

  3. 第三,确定 IC1 和IC2 的捕获边沿。这里以通道 1(CH1)输入 PWM 为例,一般我们习惯设置 IC1 捕获边沿为上升沿捕获,IC2 捕获边沿为下降沿捕获。

  4. 第四,选择触发输入信号(TRGI)。这里也是以通道1(CH1)输入PWM 为例,那么我们就应该选择TI1FP1 为触发输入信号。如果是通道 2(CH2)输入 PWM,那就选择TI2FP2 为触发输入信号。可以看到这里并没有对应通道 3(CH3)或者通道4(CH4)的触发输入信号,所以我们只选择通道 1 或者通道2 作为 PWM 输入的通道。

  5. 第五,从模式选择:复位模式。复位模式的作用是:在出现所选触发输入 (TRGI) 上升沿时,重新初始化计数器并生成一个寄存器更新事件。

  6. 第六,读取一个 PWM 周期内计数器的计数个数,以及高电平期间的计数个数,再结合计数器的计数周期(即计一个数的时间),最终通过计算得到输入的 PWM 周期和占空比等参数。以通道 1(CH1)输入 PWM,设置IC1 捕获边沿为上升沿捕获,IC2 捕获边沿为下降沿捕获为例,那么 CCR1 寄存器的值+1 就是 PWM 周期内计数器的计数个数,CCR2 寄存器的值+1 就是PWM 高电平期间计数器的计数个数。通过这两个值就可以计算出 PWM 的周期或者占空比等参数。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/16106.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

基于SpringBoot的校园旧物回收小程序+LW示例参考

1.项目介绍 系统角色:管理员、普通用户功能模块:管理员(商品管理、分类管理、用户管理、订单管理、院校管理等)、普通用户(发布商品、下架商品、购买商品、订单管理、消息模块、充值等)技术栈:…

【微信好友暴涨秘籍】超简单技巧,3天增加100+好友!你也可以!

关注我们 | 免费试用 【微信好友暴涨秘籍】 超简单技巧,3天增加100好友!你也可以! 想要微信好友像雪球一样滚起来吗? 你是不是也在为微信好友太少而头疼,想加更多人但又不知道从哪里开始?是不是看到别人…

使用etl工具kettle的日常踩坑梳理之一、从mysql中导出数据

根据2024年11月份测试了kettle工具在9.3及以上版本已经没有内置连接大数据(如Hadoop)组件了。 建议安装9.2及以下的,我这里送上8.3.0版本的请用百度网盘下载链接:https://pan.baidu.com/s/1INRChuepogd332b81fC32w?pwd4ll9 提取码:4ll9 然…

Linux—进程学习-02

目录 Linux—进程学习—21.通过系统调用创建进程—fork1.1fork创建子进程1.2fork函数的返回值1.3利用fork实现多进程 2.有关cpu的常识了解3.进程状态3.1从操作系统层面了解进程状态3.1.1就绪和新建状态的理解3.1.2运行和阻塞状态的理解3.1.3挂起状态的理解挂起和阻塞的区别 3.1…

vxe-grid table 校验指定行单元格的字段,只校验某个列的字段

Vxe UI vue vxe-table 中校验表格行是非常简单的,只需要配置好校验规则,然后调用 validate 方法就可以自动完成校验,但是由于项目淡色特殊需求,在某个单元格的值修改后需要对另一个列的值就行校验,这个时候又不需要全部…

基于vue框架的的数字藏品第三方交易平台的设计与实现bh72e(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。

系统程序文件列表 项目功能:用户,藏品类型,藏品信息,商品订单 开题报告内容 基于Vue框架的数字藏品第三方交易平台的设计与实现 开题报告 一、研究背景与意义 随着区块链技术的迅猛发展和数字经济的崛起,数字藏品作为一种新兴的数字资产形式&#xf…

2024年的网络安全现状,太迷茫

前言 网络安全是指保护计算机网络和网络上的数据免受未经授权的访问、使用、泄露、破坏和干扰的一系列措施和技术。在当今数字化时代,网络安全变得尤为重要,因为我们越来越依赖互联网和计算机网络进行各种活动,如通信、数据传输、金融交易和…

微服务(三)

目录 1.微服务保护 1.1.服务保护方案 1.1.1.请求限流 1.1.2.线程隔离 1.1.3.服务熔断 1.2.Sentinel 1.2.1.介绍和安装 1.2.2.微服务整合 1.3.请求限流 1.4.线程隔离 1.4.1.OpenFeign整合Sentinel 1.4.2.配置线程隔离 1.5.服务熔断 1.5.1.编写降级逻辑 1.5.2.服务…

【数据结构】顺序表解析及实战运用

目录 线性表 顺序表 概念及结构 静态顺序表 动态顺序表 接口实现 初始化与销毁顺序表 检查容量(扩容函数) 打印顺序表 尾部插入和尾部删除 头部插入与头部删除 查找数据 指定下标位置插入 删除指定下标位置的数据 顺序表优缺点 优点 缺点…

二进制的bitset做法

题目 代码&#xff08;bitset的to_ulong()) 别的学校oj平台过不了&#xff0c;但是用他们后台数据推算&#xff0c;自测是能过的 string -> find bitset erase to_ulong() #include<bits/stdc.h> using namespace std;int main() {int n;cin >> n;getchar…

SSM药房管理系统—计算机毕业设计源码42430

目 录 摘要 1 绪论 1.1课题目的及意义 1.2研究背景 1.3 研究方法 1.4论文结构与章节安排 2 药房管理系统系统分析 2.1 可行性分析 2.2 系统流程分析 2.2.1 数据流程 3.3.2 业务流程 2.3 系统功能分析 2.3.1 功能性分析 2.3.2 非功能性分析 2.4 系统用例分析 2.…

PC端微信多开

PC端一键微信多开&#xff0c;应用分身&#xff0c;方便快捷实现&#xff1b;WeChatStart.bat 第一种普通多开 echo off taskkill /F /FI "IMAGENAME eq WeChat.exe" taskkill /F /FI "IMAGENAME eq WeChatCopy.exe" start C:"\Program Files (x86)…

Java集合框架高频面试问题精粹(下篇)

书接上回&#xff0c;上一篇文章介绍了 Java 集合常见面试题全解&#xff08;上&#xff09;&#xff0c;反响不错&#xff0c;也有很多同学发表了自己的观点&#xff0c;这次又来了&#xff0c;这次是Java集合常见面试题总结&#xff08;下&#xff09;了&#xff0c;主要讲解…

vue3初始项目结构与分析

简介 时隔多年再次学习vue&#xff0c;单纯学习刚创立好的项目分析其结构与运作方式&#xff0c;掌握了基础才能在工作中延申 环境&#xff1a; nvm: v1.1.12 node.js: v18.20.5 npm: v10.8.2 vue: 3 visual studio code&#xff1a;v1.95.2 正文 下图抛开HelloVue.vue就是一…

【51单片机】LCD1602液晶显示屏

学习使用的开发板&#xff1a;STC89C52RC/LE52RC 编程软件&#xff1a;Keil5 烧录软件&#xff1a;stc-isp 开发板实图&#xff1a; 文章目录 LCD1602存储结构时序结构 编码 —— 显示字符、数字 LCD1602 LCD1602&#xff08;Liquid Crystal Display&#xff09;液晶显示屏是…

【C#设计模式(6)——适配器模式(Adapter Pattern)】

前言 C#设计模式(6)——适配器模式(Adapter Pattern) 适配器模式主要用于在不修改现有类的情况下&#xff0c;使本来不包含的类可以一起工作。 代码 //插头接口 public interface IPlug {void Charge(); } //插头适配 public class Adapter {public void ConverterCharge(){Co…

鸿蒙next ui安全区域适配(刘海屏、摄像头挖空等)

目录 相关api 团结引擎对于鸿蒙的适配已经做了安全区域的适配,也考虑到了刘海屏和摄像机挖孔的情况,在团结引擎内可以直接使用Screen.safeArea 相关api

【C++融会贯通】二叉树进阶

目录 一、内容说明 二、二叉搜索树 2.1 二叉搜索树概念 2.2 二叉搜索树操作 2.2.1 二叉搜索树的查找 2.2.2 二叉搜索树的插入 2.2.3 二叉搜索树的删除 2.3 二叉搜索树的实现 2.3.1 二叉搜索树的节点设置 2.3.2 二叉搜索树的查找函数 2.3.2.1 非递归实现 2.3.2.2 递…

JMeter初体验:从入门到入门的性能测试之旅

一、关于性能测试 1、性能测试概述 性能测试是一种非功能测试&#xff0c;旨在评估系统在不同负载条件下的性能表现。它包括负载测试、压力测试、稳定性测试和基准测试等。性能测试的目的是确保系统在预期的负载下能够正常运行&#xff0c;并满足用户对响应时间、吞吐量和其他…

计算机网络-数据链路层

一、数据链路层所使用的信道类型&#xff1a; 1、点对点信道->PPP协议 2、广播信道。->CSMA/CD协议 二、从层次上看数据的流动 三、数据链路和帧 链路&#xff1a;即物理链路&#xff0c;从一个结点到相邻节点的一段物理链路。 数据链路&#xff1a;逻辑链路&#x…