当前位置:网站首页>虫子 STM32 高级定时器 (哈哈我说实话硬件定时器不能体现实力,实际上想把内核定时器发上来的,一想算了,慢慢来吧)

虫子 STM32 高级定时器 (哈哈我说实话硬件定时器不能体现实力,实际上想把内核定时器发上来的,一想算了,慢慢来吧)

2022-06-23 03:44:00 华为云

高级定时器

image-20220601191153791

时钟源

这里先说一下时钟源百分之99用内部的,其他3个基本不用,下面三个当做了解,有地方错了,有点迷糊

  1. 内部时钟源CK_INT
  2. 外部时钟模式1—外部的GPIO Tix(x=1 2 3 4)
  3. 外部时钟模式2—外部的GPIO ETR
  4. 内部触发输入
内部时钟源
  1. 内部时钟源来自RCC的TIMx_CLK
  2. TIMx_CLK等于多少呢?如何确定?
外部时钟模式1

image-20220601164156491

时钟信号输入引脚
  1. 外部的GPIO TIx,对应:TIMx_CH1/2/3/4
  2. TIM_CCMRx 的位 CCxS[1:0]配置,其中 CCMR1 控制 TI1/2, CCMR2 控制 TI3/4
滤波器
  1. 如果来自外部的时钟信号的频率过高或者混杂有高频干扰信号的话,我们就需要使用滤波器对 ETRP 信号重新采样,来达到降频或者去除高频干扰的目的
  2. 由TIMx_CCMRx 的位 ICxF[3:0]配置
边沿检测
  1. 边沿检测的信号来自于滤波器的输出,在成为触发信号之前,需要进行边沿检测,决定是上升沿有效还是下降沿有效。
  2. 由 TIMx_CCER 的位 CCxP 和 CCxNP 配置
触发选择
  1. 当使用外部时钟模式 1 时,触发源有两个,一个是滤波后的定时器输入 1( TI1FP1)和滤波后的定时器输入 2( TI2FP2)
  2. 由 TIMx_SMCR 的位 TS[2:0]配置
使能计数器
  1. 经过上面的 5 个步骤之后, 最后我们只需使能计数器开始计数,外部时钟模式 1 的配置就算完成。
  2. 使能计数器由 TIMx_CR1 的位 CEN 配置。
外部时钟模式2

image-20220601171303745

时钟信号输入引脚

当使用外部时钟模式 2 的时候,时钟信号来自于定时器的特定输入通道 TIMx_ETR,只有 1 个。

外部触发极性
  1. 来自 ETR 引脚输入的信号可以选择为上升沿或者下降沿有效
  2. 具体的由 TIMx_SMCR的位 ETP 配置
外部触发预分频器
  1. 由于 ETRP 的信号的频率不能超过 TIMx_CLK( 180M)的 1/4,当触发信号的频率很高的情况下,就必须使用分频器来降频
  2. 具体的由 TIMx_SMCR 的位 ETPS[1:0]配置
滤波器
  1. 如果 ETRP 的信号的频率过高或者混杂有高频干扰信号的,需要使用滤波器对 ETRP 信号重新采样,来达到降频或者去除高频干扰的目的
  2. 具体的由 TIMx_SMCR 的位 ETF[3:0]配置,其中的 fDTS 是由内部时钟 CK_INT 分频得到,具体的由 TIMx_CR1 的位CKD[1:0]配置
从模式选择
  1. 经过滤波器滤波的信号连接到 ETRF 引脚后,触发信号成为外部时钟模式 2 的输入,最终等于 CK_PSC,然后驱动计数器 CNT 计数。
  2. 具体的配置 TIMx_SMCR 的位 ECE 为 1即可选择外部时钟模式 2
使能计数器
  1. 经过上面的 5 个步骤之后, 最后我们只需使能计数器开始计数,外部时钟模式 2 的配置就算完成
  2. 使能计数器由 TIMx_CR1 的位 CEN 配置。
内部触发输入
  1. 内部触发输入是使用一个定时器作为另一个定时器的预分频器。硬件上高级控制定时器和通用定时器在内部连接在一起,可以实现定时器同步或级联。
  2. 由TIMx_SMCR 的位 TS[2:0]配置

image-20220601171522814

image-20220601171555575

控制器

  1. 控制器就是用来控制的,发送命令的
  2. CR1、CR2、SMCR、CCER,主要学习这几个寄存器即可。

时基单元

image-20220601173642502

时基单元的组成
  1. 16位的预分频器 PSC,PSC
  2. 16位的计数器CNT, CNT
  3. 8位的重复计数器RCR,RCR(高级定时器独有)
  4. 16位的自动重装载寄存器ARR,ARR

image-20220601174341256

image-20220601174441578

image-20220601174500748

输入捕获

image-20220601183145932

image-20220601174921737

输入通道

当使用需要被测量的信号从定时器的外部引脚 TIMx_CH1/2/3/4 进入,通常叫 TI1/2/3/4,在后面的捕获讲解中对于要被测量的信号我们都以 TIx 为标准叫法。

输入滤波和边沿检测

image-20220601180906124

捕获通道

image-20220601180941131

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

image-20220601181056008

输出比较

image-20220601191034016

image-20220601183332060

输出比较寄存器

image-20220601183405998

死区发生器

image-20220601183457631

带死区插入的半桥驱动电路

image-20220601190752081

带死区插入的互补输出波形图

image-20220601190621503

输出控制

image-20220601190143015

输出引脚

image-20220601190225929

输入捕获的应用

测量脉宽和频率

image-20220601191310577

PWM输入模式

image-20220601191348676

image-20220601191416069

  1. 输出比较模式总共有 8 种,常用的是PWM模式。
  2. 由寄存器 CCMRx 的位 OCxM[2:0]配置。

image-20220601191514701

代码

首先我们选好脚,这里我们用高级定时器

PWM互补输出实验,带死区时间,带刹车控制

互补需要两个脚,死区可以软件配置,刹车还需要一个脚。我们只能用高级定时器1了,没有8

image-20220602003443496

image-20220602003509997

原网站

版权声明
本文为[华为云]所创,转载请带上原文链接,感谢
https://bbs.huaweicloud.com/blogs/360508