STM32-高级定时器

news2024/12/28 5:22:50

以STM32F407为例。

高级定时器

高级定时器比通用定时器增加了可编程死区互补输出、重复计数器、带刹车(断路)功能,这些功能都是针对工业电机控制方面。

功能框图

16位向上、向下、向上/向下自动重装载计数器。

16位可编程预分频器,1~65536。

多达4个独立通道,用于:

        输入捕获

        输出比较

        PWM产生(边沿对齐模式和中心对齐模式)

        单脉冲模式输出

具有可编程死区时间的互补输出。

用外部信号控制定时器的同步电路,并将多个定时器互连在一起。

重复计数器,仅在给定次数的计数器循环后更新定时器寄存器。

中断输入,使定时器的输出信号处于复位状态或已知状态。

中断/DMA生成以下事件:

        更新:计数器溢出/下溢,计数器初始化(由软件或内部/外部触发)

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

        输入捕获

        输出比较

        断路输入

支持增量(正交)编码器和霍尔传感器电路的定位目的。

触发输入外部时钟或逐周期电流管理。

时钟源

高级控制定时器可选四种时钟源:

内部时钟源CK_INT

外部时钟模式1:外部输入引脚TIx(x=1/2/3/4)

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

内部触发输入ITRx(x=1/2/3/4)

内部时钟源CK_INT

时钟信号来自芯片内部,为主频168M(STM32F407为例)。一般情况下都是使用内部时钟。当从模式控制寄存器TIMx_SMCR:SMS位为000时使用内部时钟。

外部时钟模式1:外部输入引脚TIx(x=1/2/3/4)

时钟信号来自定时器的输入通道TI1/2/3/4,即TIMx_CH1/2/3/4。具体使用哪一路信号,由TIM_CCMRx:CCxS[1:0]配置。CCMR1控制TI1/2,CCMR2控制TI3/4。

如果来自外部时钟信号的频率过高或混杂有高频干扰信号的话,就需要使用滤波器对信号重新采样,来达到降频或者去除高频干扰的目的,具体由TIMx_CCMRx:ICxF[3:0]配置。

边沿检测的信号来自于滤波器的输出,在成为触发信号前需要进行边沿检测,决定是上升沿有效还是下降沿有效,具体由TIMx_CCER:CCxP和CCxNP位配置。

触发源有两个:滤波后的定时器输入1(TI1FP1)、滤波后的定时器输入2(TI1FP2),具体由TIMx_SMCR:TS[2:0]配置。

选定了触发源信号后,需要把信号连接到TRGI引脚,让触发信号成为外部时钟模式1的输入,最终等于CK_PSC,然后驱动计数器CNT计数。具体由TIMx_SMCR:SMS[2:0]配置,000时为外部时钟模式1。

经过上面的5个步骤后,最后只需使能计数器开始计数,外部时钟模式1的配置就算完成了。具体由TIMx_CR1:CEN位配置。

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

时钟信号来自定时器的特定输入通道TIMx_ETR,只有一个。

外部触发极性来自ETR引脚输入的信号,可以选择上升沿有效还是下降沿有效,具体由TIMx_SMCR:ETP位配置。

由于ETRP的信号频率不得超过TIMx_CLK的1/4,当触发信号的频率很高时必须使用分频器来降频,具体由TIMx_SMCR:ETPS[1:0]配置。

如果ETRP的信号频率过高或混杂有高频干扰信号的话,就需要使用滤波器对信号重新采样,来达到降频或者去除高频干扰的目的,具体由TIMx_SMCRx:ETF[3:0]配置。fDTS是由内部时钟CK_INT分频得到,具体由TIMx_CR1:CKD[1:0]配置。

经过滤波器滤波的信号连接到ETPF引脚后,触发信号成为外部时钟模式2的输入,最终等于CK_PSC,然后驱动计数器CNT计数。具体由TIMx_SMCR:ECE位配置,1时为外部时钟模式2。

经过上面的5个步骤后,最后只需使能计数器开始计数,外部时钟模式2的配置就算完成了。具体由TIMx_CR1:CEN位配置。

内部触发输入ITRx(x=1/2/3/4)

内部触发输入是使用一个定时器作为另一个定时器的预分频器。硬件上高级控制定时器和通用定时器在内部连接在一起,可以实现定时器同步和级联。主模式的定时器可以对从模式定时器只需复位、启动、停止或提供时钟。

高级控制定时器和部分通用定时器(TIM2~TIM5)可以设置为主模式或从模式,TIM9和TIM10可以设置为从模式。

如图,主模式定时器TIM1为从模式定时器TIM2提供时钟,即TIM1用作TIM2的预分频器。

控制器

触发控制器用来针对片内外设输出触发信号,比如为其它定时器提供时钟和触发DAC/ADC转换。

编码器接口专门针对编码器计数而设计。

从模式控制器可以控制计数器复位、启动、递增/递减、计数。

时基单元

高级控制定时器时基单元组成:计数器寄存器(CNT,16位有效)、预分频器寄存器(PSC,16位有效)、自动重装载寄存器(ARR,16位有效)、重复计数器寄存器(RCR,8位有效,高级定时器专有)。

PSC预分频器寄存器有一个输入时钟CK_PSC和一个输出时钟CK_CNT。输入时钟CK_PSC就是时钟源的输出,输出时钟CK_CNT用来驱动计数器CNT计数。通过设置预分频器PSC的值可以得到不同的CK_CNT,值为1~65536分频。

三种计数模式:递增、递减、中心对齐。

递增计数模式:计数器从0开始计数,每一CK_CNT脉冲,计数器就加1,直到计数器的值与ARR值相等,然后计数器又从0开始计数并生成计数器上溢事件,如此循环。如果禁用重复计数器,在计数器生成上溢事件就马上生成更新事件(UEV);如果使能重复计数器,每生成一次上溢事件,重复计数器就减1,直到减为0时才会生成更新事件(UEV)。

递减计数模式:计数器从ARR值开始计数,每一CK_CNT脉冲,计数器就减1,直到计数器的值减为0,然后计数器又从ARR值开始计数并生成计数器下溢事件,如此循环。如果禁用重复计数器,在计数器生成下溢事件就马上生成更新事件(UEV);如果使能重复计数器,每生成一次下溢事件,重复计数器就减1,直到减为0时才会生成更新事件(UEV)。

中心对齐模式:计数器从0开始递增,直到计数器的值与(ARR-1)值相等,生成计数器上溢事件。然后计数器又从ARR开始递减,直到计数器的值为1时生成计数器下溢事件。然后重新重0开始,如此循环。每次发送计数器上溢和下溢事件都会生成更新事件。

ARR自动重装载寄存器用来存放与CNT比较值。如果CNT值等于ARR值,就递减重复计数器。可以通过TIMx_CR1:ARPE位控制自动重装载影子寄存器功能,如果ARPE位置1,只有在事件更新时才把TIMx_ARR值赋给影子寄存器。如果ARPE位置0,则修改TIMx_ARR值时马上赋给影子寄存器。

在基本/通用定时器发生上溢/下溢事件时直接就生成更新事件,但对于高级控制定时器在硬件结构上多出了RCR重复计数器寄存器,在定时器发生上溢/下溢事件会递减重复计数器的值,当重复计数器的值为0时才生成更新事件。在发生N+1个上溢/下溢事件时产生更新事件(N为RCR的值)。

输入捕获

输入捕获可以对输入的信号上升沿、下降沿或双边沿进行捕获,常用的有测量输入信号的脉宽和测量PWM输入信号的频率和占空比。

大概原理是当捕获到信号的跳变沿时,把CNT计数器的值锁存到捕获寄存器CCR中,把前后两次捕获到的CCR寄存器中的值相减,就可以算出脉宽和频率。如果捕获的脉宽的时间长度超过捕获定时器的周期,就会发生溢出,需要额外做处理。

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

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

相关文章

精品基于Python的气象预报系统-爬虫

《[含文档PPT源码等]精品基于Python的气象预报系统-爬虫》该项目含有源码、文档、PPT、配套开发软件、软件安装教程、项目发布教程、包运行成功! 软件开发环境及开发工具: 开发语言:python 使用框架:Django 前端技术&#xff…

第六讲:VBA与ACCESS的ADO连接中,所涉及的对象

《VBA数据库解决方案》教程(10090845)是我推出的第二套教程,目前已经是第二版修订了。这套教程定位于中级,是学完字典后的另一个专题讲解。数据库是数据处理的利器,教程中详细介绍了利用ADO连接ACCDB和EXCEL的方法和实…

安装anaconda时控制台conda-version报错

今天根据站内的一篇博客教程博客在此安装anaconda时&#xff0c;检查conda版本时报错如下&#xff1a; >>>>>>>>>>>> ERROR REPORT <<<<<<<<<<<< Traceback (most recent call last): File “D:\An…

众佰诚:新手如何在抖音电商中脱颖而出

在这个信息爆炸的时代&#xff0c;短视频平台抖音已经成为了人们获取信息、娱乐和购物的重要渠道。越来越多的商家开始在抖音上开设店铺&#xff0c;希望通过这个平台实现销售增长。然而&#xff0c;对于新手来说&#xff0c;如何在众多的竞争对手中脱颖而出&#xff0c;成为了…

ardupilot开发 --- 避障方案、SLAM方案探索 篇

0. 无意间发现一张好看的图 1. 无人机避障技术 目前&#xff0c;无人机的避障技术中最为常见的是红外线传感器、超声波传感器、激光传感器以及视觉传感器。那为什么大疆的前视避障首先选择了双目视觉呢&#xff1f; 红外线传感器超声波传感器激光传感器视觉传感器。 参考&am…

unity工程

1首先我们来熟悉一下Unity每个文件夹的作用 1.assets&#xff1a;工程资源文件夹 2.library&#xff1a;库文件夹 3.logs&#xff1a;日志文件夹 4.obj&#xff1a;编译产生中间文件 5.packages&#xff1a;包配置信息 6&#xff1a;projectsettings&#xff1a;工程设置…

【小白福音】手把手教学搭建Vue+SpringBoot开发环境完整教程

前言:在很多新手小白在准备开发一个属于自己的前后端分离项目的时候需要准备一些例如Java环境配置、Node.Js配置、Maven配置以及软件安装等等,于本次博主亲自录制了一套完整的安装配置教程,提供到最后给大家进行下载。 注:本教程仅适用于小白,每一节课都是博主原创录制的,…

selenium元素定位 —— 提高篇 xpath定位元素

XPath 最初是用来在 XML 文档中定位 DOM 节点的语言&#xff0c;由于 HTML 也可以算作 XML 的一种实现&#xff0c;所以 Selenium 也可以利用 XPath 这一强大的语言来定位 Web 元素。xpath的强大在于它可以通过父节点或者兄弟节点&#xff0c;根据html元素的前后关联性定位到元…

tmux工具

B站学习地址&#xff1a;tmux教程

烂大街的测试左移和右移!

01、测试左移与右移的定义 通俗的讲&#xff1a;左移是往开发阶段移&#xff0c;右移是往发布之后移。 正常测试&#xff1a;提测后的测试工作——到——发布验证完成阶段。 测试左移&#xff1a;提测之前的测试。 如&#xff1a;代码单元测试&#xff0c;代码质量检测&…

家庭用洗地机哪个最好?家用洗地机选购

家里日常打扫&#xff0c;维持地面的清洁&#xff0c;清洁干湿垃圾这时候必不可缺的就是洗地机了&#xff0c;由于近年来洗地机行业的热度高涨&#xff0c;涌现了很多洗地机品牌&#xff0c;这也让消费者在挑选的时候无从下手&#xff0c;今天笔者就给大家讲讲洗地机挑选需要主…

数据结构笔记——查找、排序(王道408)

文章目录 查找基本概念线性表查找顺序查找折半查找&#xff08;二分&#xff09;分块查找 树查找二叉排序树&#xff08;BST&#xff09;平衡二叉树&#xff08;AVL&#xff09;的插入平衡化复杂度分析 平衡二叉树的删除 红黑树红黑树的定义和性质红黑树定义红黑树性质 红黑树的…

VS2022安装时碰到VsWebProtocolSelector.Msi包安装错误,2330code解决方法

未能安装包“Microsoft.VisualStudio.VsWebProtocolSelector.Msi,version17.8.34129.139”。 搜索 URL https://aka.ms/VSSetupErrorReports?qPackageIdMicrosoft.VisualStudio.VsWebProtocolSelector.Msi;PackageActionInstall;ReturnCode2330 详细信息 …

BIOS开发笔记 - DDR基础

简介 内存是计算机中重要的组成部分,主要为CPU计算时提供一个数据的临时存储的场所。CPU在处理数据前,会将数据从外存复制到内存中,然后再处理内存中的数据,如果需要将结果保存,则一次性写回外存,这样便大大提高CPU的处理效率。 …

【java学习—十二】io流(1)

文章目录 1. 主要内容2. File类3. 练习题4. Java IO原理 1. 主要内容 java.io.File 类的使用&#xff08;计算机操作系统中的文件和文件夹&#xff09; IO原理及流的分类。 IO即input和output。 流的解释&#xff1a;     比如&#xff1a;通过程序把图片放到某一个文件…

如何看待腾讯云双11活动3年轻量服务器突然涨价?

腾讯云双十一优惠活动提供的3轻量应用服务器涨价了&#xff0c;最初双11优惠活动3年轻量2核4G5M服务器从566.6元涨价到756元三年&#xff0c;3年轻量2核2G4M服务器从366.6元恢复到540元三年&#xff0c;大家抓紧吧&#xff0c;三年轻量已经库存已经不多了&#xff0c;看看隔壁阿…

@RunWith(SpringRunner.class)注解的作用

通俗点&#xff1a; RunWith(SpringRunner.class)的作用表明Test测试类要使用注入的类&#xff0c;比如Autowired注入的类&#xff0c;有了RunWith(SpringRunner.class)这些类才能实例化到spring容器中&#xff0c;自动注入才能生效 官方点&#xff1a; RunWith 注解是JUnit测…

线程池与工厂模式

目录 ♫什么是线程池 ♫线程池的优点 ♫工厂模式 ♫工厂模式的意义 ♫线程池的使用 ♫线程池常见的创建方法 ♫ThreadPoolExecutor ♫实现一个线程池 ♫什么是线程池 线程池是一种管理和复用线程的技术&#xff0c;它在应用程序启动时预先创建一组线程&#xff0c;并将它…

三巨头的AI布局:微软领先,谷歌追赶,亚马逊待考

AI是当今科技领域的热门话题&#xff0c;也是三大云计算巨头微软、谷歌和亚马逊的核心战略。近日&#xff0c;微软和谷歌先后公布了2023年第三季度的财报&#xff0c;展示了各自在AI方面的进展和成果。亚马逊也即将发布财报&#xff0c;让我们一起来看看三巨头的AI布局有什么不…

安卓毕业设计:基于安卓Android的仓库货物管理app

项目介绍 本文介绍了仓库货物管理APP软件开发建设的意义和国内外发展现状&#xff0c;然后详细描述了所开发手机APP的可行性分析&#xff0c;并分析了手机APP所要实现的功能。因为仓库货物管理设施较多&#xff0c;而且人口密集&#xff0c;不能更好的管理仓库货物&#xff0c…