stm32专题二十六:高级定时器介绍

这篇具有很好参考价值的文章主要介绍了stm32专题二十六:高级定时器介绍。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

高级定时器

STM32F103有 2 个高级定时器 TIM1 和 TIM8,高级定时器的功能主要有定时、输入捕获、输出比较、互补输出等。

高级定时器简介:

计数器16bit,上 / 下 / 两边 计数,TIM1和TIM8,还有一个重复计数器RCR,独有;

有4个GPIO,其中通道1 ~ 3还有互补输出GPIO;

时钟来自PCLK2,为72M,可实现1~65536分频;

高级定时器和通用定时器的引脚分布:

stm32f103高级定时器,stm32,嵌入式硬件,单片机

高级定时器结构框图(分成6个部分): 

stm32f103高级定时器,stm32,嵌入式硬件,单片机

一、时钟源:

  1. 内部时钟(CK_INT);

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

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

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

下面,我们来分析一下这个时钟源的框图:

stm32f103高级定时器,stm32,嵌入式硬件,单片机

1 内部时钟CK_INT:内部时钟 CK_INT 即来自于芯片内部,等于 72M,一般情况下,我们都是使用内部时钟;

2 外部时钟模式1:

stm32f103高级定时器,stm32,嵌入式硬件,单片机

(1)时钟信号输入引脚:

当使用外部时钟模式1时,时钟信号来自于定时器的输入通道,共 4个,分别为 TI1 / 2 / 3 / 4,即 TIMx_CH1 / 2 / 3 / 4。

外部的GPIO TIx,对应:TIMx_CH1 / 2 / 3 / 4

stm32f103高级定时器,stm32,嵌入式硬件,单片机

由TIM_CCMRx 的位 CCxS[1:0]配置,其中 CCMR1 控制 TI1 / 2, CCMR2 控制 TI3 / 4

stm32f103高级定时器,stm32,嵌入式硬件,单片机

中文参考手册中提到,通道2可以配置为输出,如果是输入模式,可以选择连接CH1 or CH2,同样的,通道1也可以选择配置成连接CH1 or CH2。

(2)滤波器:

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

具体如何滤波?
stm32f103高级定时器,stm32,嵌入式硬件,单片机

stm32f103高级定时器,stm32,嵌入式硬件,单片机

(3)边沿检测:

边沿检测的信号来自于滤波器的输出,在成为触发信号之前,需要进行边沿检测,决定是上升沿有效还是下降沿有效。

stm32f103高级定时器,stm32,嵌入式硬件,单片机

(4)触发选择:stm32f103高级定时器,stm32,嵌入式硬件,单片机

(5)从模式选择:

选定了触发源信号后,最后我们需把信号连接到 TRGI 引脚,让触发信号成为外部时钟模式 1 的输入,最终等于 CK_PSC,然后驱动计数器 CNT 计数。

3 外部时钟模式2

stm32f103高级定时器,stm32,嵌入式硬件,单片机

stm32f103高级定时器,stm32,嵌入式硬件,单片机

网上关于TI1FP1的描述:

       比如 TI1FP1 与 TI1FP2。说实在的,这个地方参考手册里就没有个明确的表述,让人很费解。但是可以可以推理得出来,二者都是来自同一 TI1 输入通道,经过输入滤波和边沿检测器后所产生的具有相同特征的信号,然后映射到不同的输入捕捉通道,本质上还是同一路信号。

 同理,TI2信号,经过滤波和边沿检测后产生了2路滤波信号,分别是TI2FP1与TI2FP2,它俩也是具有相同特征的信号,只是TI2FP1映射到捕捉通道IC1,TI2FP2映射到捕捉通道IC2。

4 内部触发输入:

内部触发输入是使用一个定时器作为另一个定时器的预分频器。硬件上高级控制定时器和通用定时器在内部连接在一起,可以实现定时器同步或级联。

stm32f103高级定时器,stm32,嵌入式硬件,单片机

stm32f103高级定时器,stm32,嵌入式硬件,单片机

stm32f103高级定时器,stm32,嵌入式硬件,单片机

stm32f103高级定时器,stm32,嵌入式硬件,单片机

四.输入捕获:

stm32f103高级定时器,stm32,嵌入式硬件,单片机

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

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

1 普通脉宽测量:当检测到第一个上升沿时,计数器CNT开始从0计数,又检测到下降沿时产生中断,此时的CNT值被锁存到CCR寄存器中,此时CCR的值就对应高电平的时间。

2 PWM输入测量:一路输入信号(TI1)占用两个捕获通道(IC1 和 IC2)。

输入捕获框图:
stm32f103高级定时器,stm32,嵌入式硬件,单片机

(1)输入通道:

需要被测量的信号从定时器的外部引脚 TIMx_CH1/2/3/4 进入,通常叫 TI1 / 2 / 3 / 4。

(2)输入滤波器和边沿检测器:

这一块和外部时钟模式一差不多。那么为什么需要滤波呢?

当输入的信号存在高频干扰的时候,我们需要对输入信号进行滤波,即进行重新采样,根据采样定律,采样的频率必须大于等于两倍的输入信号。比如输入的信号为 1M,又存在高频的信号干扰,那么此时就很有必要进行滤波,我们可以设置采样频率为 2M,这样可以在保证采样到有效信号的基础上把高于 2M 的高频干扰信号过滤掉。

边沿检测器用来设置信号在捕获的时候是什么边沿有效,可以是上升沿,下降沿,或者是双边沿,具体的由 CCER 寄存器的位 CCxP 和 CCxNP 决定。

(3)捕获通道:

捕获通道就是图中的 IC1 / 2 / 3 / 4,每个捕获通道都有相对应的捕获寄存器 CCR1 / 2 / 3 / 4,当发生捕获的时候,计数器 CNT的值就会被锁存到捕获寄存器中
stm32f103高级定时器,stm32,嵌入式硬件,单片机

这里我们要搞清楚输入通道和捕获通道的区别,输入通道是用来输入信号的,捕获通道是用来捕获输入信号的通道,一个输入通道的信号可以同时输入给两个捕获通道。比如输入通道 TI1 的信号经过滤波边沿检测器之后的 TI1FP1 和 TI1FP2 可以进入到捕获通道IC1 和 IC2,其实这就是 PWM 输入捕获,只有一路输入信号(TI1)却占用了两个捕获通道(IC1 和 IC2)。当只需要测量输入信号的脉宽时候,用一个捕获通道即可。

(4)预分频器(用来降频):

捕获通道 ICx 的输出信号会经过一个预分频器,用于决定发生多少个事件时进行一次捕获。具体的由寄存器 CCMRx 的位 ICxPSC配置,如果希望捕获信号的每一个边沿,则不分频。

(5)捕获寄存器:
stm32f103高级定时器,stm32,嵌入式硬件,单片机

五 输出比较:

输出比较就是通过定时器的外部引脚对外输出控制信号,有冻结、将通道 X(x=1,2,3,4)设置为匹配时输出有效电平、输出无效电平、翻转、强制为无效电平、强制为有效电平、PWM1 和 PWM2 这八种模式。其中 PWM 模式是输出比较中的特例,使用的也最多。

stm32f103高级定时器,stm32,嵌入式硬件,单片机

结构框图:

stm32f103高级定时器,stm32,嵌入式硬件,单片机

1 比较寄存器:

当计数器 CNT 的值跟比较寄存器 CCR 的值相等的时候,输出参考信号 OCxREF 的信号的极性就会改变,其中 OCxREF=1(高电平)称之为有效电平,OCxREF=0(低电平)称之为无效电平,并且会产生比较中断 CCxI,相应的标志位 CCxIF(SR 寄存器中)会置位。然后 OCxREF再经过一系列的控制之后就成为真正的输出信号 OCx/OCxN。

2 死区发生器:

在生成的参考波形 OCxREF 的基础上,可以插入死区时间,用于生成两路互补的输出信号 OCx 和 OCxN,死区时间的大小具体由 BDTR 寄存器的位 DTG[7:0]配置。死区时间的大小必须根据 与输出信号相连接的器件及其特性来调整。下面我们简单举例说明下带死区的PWM 信号的应用,我们以一个板桥驱动电路为例。

为了理解死区发生器,先看一个电机桥式驱动电路:
stm32f103高级定时器,stm32,嵌入式硬件,单片机

stm32f103高级定时器,stm32,嵌入式硬件,单片机

3 输出控制:

stm32f103高级定时器,stm32,嵌入式硬件,单片机

4 输出引脚

输出比较的输出信号最终是通过定时器的外部 IO 来输出的,分别为 CH1 / 2 / 3 / 4,其中前面三个通道还有互补的输出通道 CH1 / 2 / 3N。

输入捕获的应用:

1 测量脉宽或频率

stm32f103高级定时器,stm32,嵌入式硬件,单片机

stm32f103高级定时器,stm32,嵌入式硬件,单片机2 PWM输入模式:

stm32f103高级定时器,stm32,嵌入式硬件,单片机

stm32f103高级定时器,stm32,嵌入式硬件,单片机

输出比较的应用:

PWM输出:

PWM 输出就是对外输出脉宽(即占空比)可调的方波信号,信号频率由自动重装寄存器 ARR 的值决定,占空比由比较寄存器 CCR 的值决定。

stm32f103高级定时器,stm32,嵌入式硬件,单片机

 PWM边沿对齐模式:

stm32f103高级定时器,stm32,嵌入式硬件,单片机

stm32f103高级定时器,stm32,嵌入式硬件,单片机

stm32f103高级定时器,stm32,嵌入式硬件,单片机

stm32f103高级定时器,stm32,嵌入式硬件,单片机

占空比

周期T内CNT从0一直加到ARR,比如ARR为99, 那么CNT共计数100.

在看高电平的时间,CNT从0一直加到CCR,比如CCR是30,注意在等于30的瞬间,就已经跳变为低电平了,所以CNT从0到29是高电平,总共为30个数的时间

所以占空比为30/100=30%

电机控制:

刹车功能描述(强制关闭输出,功能是防止电机损坏,此时输出为设置的空闲电平):

stm32f103高级定时器,stm32,嵌入式硬件,单片机死区时间寄存器:

stm32f103高级定时器,stm32,嵌入式硬件,单片机

stm32f103高级定时器,stm32,嵌入式硬件,单片机

stm32f103高级定时器,stm32,嵌入式硬件,单片机文章来源地址https://www.toymoban.com/news/detail-829374.html

到了这里,关于stm32专题二十六:高级定时器介绍的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • STM32中TIM定时器定时功能详解(适用基本,通用,高级定时器)

    定时器有高级定时器、通用定时器、基本定时器三种类型。具体功能如下。 上面是每种定时器所具有的功能。 我们可以看到每种定时器都有一个定时功能,(可能是名字的由来吧)。当然,每个定时器都可以来使用定时功能,但是我们往往在基本定时器和通用定时器上面使用

    2024年01月19日
    浏览(59)
  • STM32TIM定时器PWM输出比较(适用于通用,高级定时器)

    在定时器中我们最常用的功能就是输出PWM,大多是用在电机控制方面,目前网络上相关资料也有很多,但是,很多不利于我们“现搜现用”我这里不是说我写的有多好,而是你搜索到此类文章时大部分是急于解决目前的问题,一段相关代码和讲解就行,当然不是学习背后的原

    2024年01月25日
    浏览(54)
  • STM32——高级定时器输出比较模式实验

    1,配置定时器基础工作参数 HAL_TIM_OC_Init() 2,定时器PWM输出MSP初始化 HAL_TIM_OC_MspInit() 配置NVIC、CLOCK、GPIO等 3,配置PWM模式/比较值等 HAL_TIM_OC_ConfigChannel() 4,使能通道预装载 __HAL_TIM_ENABLE_OCxPRELOAD() 5,使能输出、主输出、计数器 HAL_TIM_OC_Start() 6,修改捕获/比较寄存器的值 _HAL

    2024年02月02日
    浏览(50)
  • STM32使用高级定时器输出互补pwm波

    最近做的一个项目用到stm32,网上查了很多资料,也踩了很多坑,这里记录一下配置的步骤和说明 硬件使用的是stm32h750vbt6; 软件用到了stm32cubemx和keil5; 打开Debug模式方便调试,可以忽略,不影响代码运行 在用cube配置时钟源时,有下面三个选项 Disable(禁用) BYPASS Clock Sou

    2024年02月16日
    浏览(70)
  • STM32高级定时器输出指定数量PWM(STM32CubeMx配置)

    高级定时器中有一个重复计数器,本实验输出指定个数PWM就是利用了重复计数器的特性,先来看看重复计数器的特性是什么: 计数器每次上溢或下溢都能使重复计数器减1,减到0时,再发生一次溢出就会产生更新事件 这是什么意思呢,这里举个例子比如说我设定重复计数器的

    2024年02月02日
    浏览(86)
  • STM32F407高级定时器-死区时间研究-STM32CubeMX

    距离上次写笔记,已经过去好长时间了 中间也折腾过不少东西,但是都没咋整理,主要是这中间都是在干活儿,不是自己想要研究的,也没想着要写。 从去年10月份开始想要学习FOC,10月份研究了一个月,到11月初,实现了SVPWM驱动BLDC电机,使用串口实现开环下转速和力矩调

    2023年04月23日
    浏览(53)
  • STM32实战-高级定时器带死区的互补PWM输出

    前言: 平时我们设计点击驱动电路时,一般会采用npn和pnp三极管,来控制电机的导通和关闭,但是三级管内部自带电容,断电后不会立马断掉,会经过很小的一段时间才会放电完毕,这时候要留有死区给电容放电,这就有了互补pwm波。   同时,当电机出现故障,如果利用软

    2024年02月08日
    浏览(47)
  • STM32——高级定时器输出指定个数PWM波原理及实战

    相比于通用定时器特性: 1)重复计数器 2)死区时间带可编程的互补输出 3)断路输入,用于将定时器的输出信号置于用户可选的安全配置中 1,配置定时器基础工作参数 HAL_TIM_PWM_Init() 2,定时器PWM输出MSP初始化 HAL_TIM_PWM_MspInit() 配置NVIC、CLOCK、GPIO等 3,配置PWM模式/比较值等

    2024年01月16日
    浏览(59)
  • stm32f407探索者开发板(二十二)——通用定时器基本原理讲解

    STM32F40x系列总共最多有14个定时器 三种(4)STM32定时器区别 STM3 F4 的通用 TIMx (TIM2、TIM3、TIM4 和 TIM5)定时器功能特点包括: 16 /32 位向上、向下、向上/向下(中心对齐)计数模式,自动装载计数器(TIMx_CNT)。 16 位可编程(可以实时修改)预分频器(TIMx_PSC),计数器时钟频率的分频系

    2024年02月12日
    浏览(40)
  • 野火STM32电机系列(五)Cubemx配置高级定时器TIM1

    鸽了一段时间,放心不会断的哈,目前仅仅是显示屏坏了,不影响后面项目 前文已经配置了GPIO、编码器 本节讲解CubeMX高级定时器TIM1配置带死区的6路互补的PWM 同时配置信号触发后续ADC采集 板子引角的原理图如下 对应的: Motor1--U+--PA8--TIM1_CH1 Motor1--U---PB13--TIM1_CH1N Motor1--V+--

    2024年02月15日
    浏览(66)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包