stm32F407 高级定时器

目录

1、时钟源

1-内部时钟源CK_INT2-外部时钟模式1—外部的GPIO Tix( x=1 2 3 4)3-外部时钟模式2—外部的GPIO ETR4-内部触发输入—ITRx( x=1 2 3 4)

1.1内部时钟源

1.2外部时钟1(有点像编码器模式)

1.3 外部时钟2


各个定时器特性

高级定时器功能简介
定时器功能: 定时、输出比较、输入捕获、断路输入  

1-计数器16bit,上/下/两边 计数, TIM1和TIM8,还有一个重复计数器RCR,独有。
2-有4个GPIO,其中通道1~3还有互补输出GPIO
3-时钟来自PCLK2,可实现1~65536分频

1、高级定时器的框图

1、时钟源

1-内部时钟源CK_INT
2-外部时钟模式1—外部的GPIO Tix( x=1 2 3 4)
3-外部时钟模式2—外部的GPIO ETR
4-内部触发输入—ITRx( x=1 2 3 4)


1.1内部时钟源

1-内部时钟源来自RCC的TIMx_CLK
2-TIMx_CLK等于多少呢?如何确定?
具体的查看: RCC 专用时钟配置寄存器 (RCC_DCKCFGR)


1.2外部时钟1(有点像编码器模式)

 时钟信号输入引脚

1-外部的GPIO TIx,对应: TIMx_CH1/2/3/4
2-TIM_CCMRx 的位 CCxS[1:0]配置,其中 CCMR1控制 TI1/2, CCMR2 控制 TI3/4
滤波器
1-如果来自外部的时钟信号的频率过高或者混杂有高频干扰信号的话,我们就需要使用滤波器对 ETRP 信号重新采样,来达到降频或者去除高频干扰的目的,
2-由TIMx_CCMx 的位 ICxF[3:0]配置

边沿检测
1-边沿检测的信号来自于滤波器的输出,在成为触发信号之前,需要进行边沿检测,决定是上升沿有效还是下降沿有效。
2-由 TIMx_CCER 的位 CCxP 和 CCxNP 配置
触发选择
1-当使用外部时钟模式 1 时,触发源有两个,一个滤波后的定时器输入 1( TI1FP1)和滤波后的定时器输入 2( TI2FP2)。
2-由 TIMx_SMCR 的位 TS[2:0]配置
从模式选择
1-选定了触发源信号后,最后我们需把信号连接到TRGI 引脚,让触发信号成为外部时钟模式 1 的输入,最终等于 CK_PSC,然后驱动计数器 CNT 计数。
2-具体的配置TIMx_SMCR 的位 SMS[2:0]为 000 即可选择外部时钟模式 1。
使能计数器
1-经过上面的 5 个步骤之后, 最后我们只需使能计数器开始计数,外部时钟模式 1 的配置就算完成。
2-使能计数器由 TIMx_CR1 的位 CEN 配置

1.3 外部时钟2

时钟信号输入引脚
当使用外部时钟模式 2 的时候,时钟信号来自于定时器的特定输入通道 TIMx_ETR,只有 1 个
 外部触发极性
1-来自 ETR 引脚输入的信号可以选择为上升沿或者下降沿有效。
2-具体的由 TIMx_SMCR的位 ETP 配置

外部触发预分频器
由于 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.4内部触发输入
 

1-内部触发输入是使用一个定时器作为另一个定时器的预分频器。硬件上高级控制定时器和通用定时器在内部连接在一起,可以实现定时器同步或级联。
2- 由TIMx_SMCR 的位 TS[2:0]配置
内部触发连接

 

2、控制器
 

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


3、时基单元

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

 

 

4、输入铺获 

 

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

②输入滤波和边沿检测

 ③捕获通道

 预分频器

 ⑤捕获寄存器

五、输出比较
 

3、输入捕获的应用

1、测量脉宽和频率


 2、 PWM输入模式

 2、 PWM输入模式

五、输出比较

 

输出比较的作用

 ①输出比较寄存器

 

②死区发生器
 

 

 

 ③输出控制—讲解

 ④输出引脚

 

 

输出比较的应用

1-输出比较模式总共有 8 种,常用的是PWM模式。
2-由寄存器 CCMRx 的位 OCxM[2:0]配置
PWM输出模式
PWM 输出就是对外输出脉宽(即占空比)可调的方
波信号,信号频率由自动重装寄存器 ARR 的值决定,
占空比由比较寄存器 CCR 的值决定

 边沿对齐 VS 中心对齐
1-根据CNT的计数方向, PWM波形分成边沿对齐和中
心对齐两种。边沿对齐主要用于直流电机,中心对齐
主要用于交流电机。
2-边沿对齐时, CNT只工作在递增或者递减。
3-中心对齐时, CNT工作在递增和递减

 

 固件库结构体介绍

1-时基初始化结构体: TIM_TimeBaseInitTypeDef

 1-TIM_Prescaler: 定时器预分频器设置,时钟源经该预分频器才是定时器计数时钟CK_CNT,它设定PSC 寄存器的值。计算公式为: 计数器时钟频率(fCK_CNT) 等于fCK_PSC / (PSC[15:0] + 1),可实现1 至 65536 分

2-TIM_CounterMode: 定时器计数方式,可设置
为向上计数、向下计数以及中心对齐。高级控制定时
器允许选择任意一种。
 

-TIM_Period: 定时器周期,实际就是设定自动重
载寄存器 ARR 的值, ARR 为要装载到实际自动重载
寄存器(即影子寄存器) 的值, 可设置范围为 0 至
65535
4-TIM_ClockDivision: 时钟分频,设置定时器时钟
CK_INT 频率与死区发生器以及数字滤波器采样时钟
频率分频比。可以选择 1、 2、 4 分频。 只有在使用
外部时钟2和输入捕获的时候用得到
 

5-TIM_RepetitionCounter: 重复计数器,只有 8
位,只存在于高级定时器


2-输出比较结构体: TIM_OCInitTypeDef

1-TIM_OCMode: 比较输出模式选择,总共有八种,常用的为 PWM1/PWM2。它设定CCMRx 寄存器OCxM[2:0]位的值。
2-TIM_OutputState: 比较输出使能,决定最终的输出比较信号 OCx 是否通过外部引脚输出。它设定TIMx_CCER 寄存器 CCxE/CCxNE 位的值。
 3-TIM_OutputNState:比较互补输出使能,决定OCx 的互补信号 OCxN 是否通过外部引脚输出。它设定 CCER 寄存器 CCxNE 位的值。
4-TIM_Pulse: 比较输出脉冲宽度,实际设定比较寄存器 CCR 的值,决定脉冲宽度。可设置范围为 0 至65535

5-TIM_OCPolarity: 比较输出极性,可选 OCx 为高电平有效或低电平有效。它决定着定时器通道有效电平。它设定 CCER 寄存器的 CCxP 位的

6-TIM_OCNPolarity: 比较互补输出极性,可选OCxN 为高电平有效或低电平有效。它设定
TIMx_CCER 寄存器的 CCxNP 位的值

7-TIM_OCIdleState: 空闲状态时通道输出电平设置,可
选输出 1 或输出 0,即在空闲状态(BDTR_MOE 位为 0)时,经
过死区时间后定时器通道输出高电平或低电平。它设定CR2 寄
存器的 OISx 位的值。
8-TIM_OCNIdleState: 空闲状态时互补通道输出电平设
置,可选输出 1 或输出 0,即在空闲状态(BDTR_MOE 位为 0)
时,经过死区时间后定时器互补通道输出高电平或低电平,设
定值必须与 TIM_OCIdleState 相反。它设定是 CR2 寄存器的
OISxN 位的值
3-输入捕获结构体: TIM_ICInitTypeDef

1-TIM_Channel: 捕获通道 ICx 选择,可选TIM_Channel_1、 TIM_Channel_2、TIM_Channel_3 或 TIM_Channel_4 四个通道。它设定 CCMRx 寄存器 CCxS 位 的值。
2-TIM_ICPolarity: 输入捕获边沿触发选择,可选上升沿触发、下降沿触发或边沿跳变触发。它设定CCER 寄存器 CCxP 位和 CCxNP 位的值。 

3-TIM_ICSelection: 输入通道选择,捕获通道 ICx的信号可来自三个输入通道,分别为TIM_ICSelection_DirectTI、TIM_ICSelection_IndirectTI 或TIM_ICSelection_TRC它设定 CCRMx 寄存器的 CCxS[1:0]位的值。

 4-TIM_ICPrescaler: 输入捕获通道预分频器,可设置 1、 2、 4、 8 分频,它设定 CCMRx寄存器的ICxPSC[1:0]位的值。如果需要捕获输入信号的每个有效边沿,则设置 1 分频即可。5-TIM_ICFilter: 输入捕获滤波器设置,可选设置0x0 至 0x0F。它设定 CCMRx 寄存器ICxF[3:0]位的值。一般我们不使用滤波器,即设置为 0

4-断路和死区初始化结构体: IM_BDTRInitTypeDef有关这个结构体的成员的含义只需要参考断路和死区寄存器: TIMx_BDTR即可


  • 16
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值