高级定时器

高级控制定时器
高级控制定时器和通用定时器在基本定时器基础上引入了外部引脚,可以实现输入捕获和输出比较功能。
高级控制寄存器的时基单元包含一个16位自动重装载寄存器ARR,一个16位可向上\向下计数的计数器CNT,一个16位可编程预分频器PSC,预分频器的时钟源可选择内部时钟和外部时钟。还有一个8位的重复计数器。

功能框图
时钟源
1、内部时钟源,72M
2、外部时钟模式1:时钟信号来自定时器的输入通道,分别为TI1\2\3\4。如果来自外部的时钟和信号的频率过高或者掺杂高频的干扰信号,就需要使用滤波器对信号进行重新采样,以达到降频或除去高频的干扰信号的目的。然后对滤波器出来的信号进行边沿采样,以决定是上升沿有效还是下降沿有效。然后信号有两个通道输入(TI1FP1或TI2FP2)。选定通道后,把信号连接到TRGI引脚,然后驱动计数器计数。
3、外部时钟模式2:时钟信号来自特定的输入通道ETR引脚,来自ETR引脚的信号可以选择是上升沿有效还是下降沿有效。来自ETR的信号不能超过定时器是时钟(72M)的1\4,所以当触发信号的频率很高时,就要用分频器来降频。然后进行滤波来达到降频和除去高频的干扰。经过滤波器的信号连接到ETRF引脚后,驱动计数器计数。
4、内部触发输入:使用一个定时器作为另一个定时器的预分频器。
控制器
掌握各寄存器的使用方法
时基单元
高级控制定时器的时基单元有四个寄存器,计数器寄存器 (CNT)、预分频器寄存器(PSC)、自动重载寄存器 (ARR) 和重复计数器寄存器 (RCR)
预分频器
预分频器PSC,有一个输入时钟 CK_PSC 和一个输出时钟 CK_CNT,输入时钟CK_PSC 就是上面四种时钟源的输出,输出时钟CK_CNT用来驱动计数器计数。(通过预设PSC的值可以使输出时钟CK_CNT实现1至65536分频)
计数器
递增计数模式、递减计数模式和递增/递减 (中心对齐) 计数模式
自动重装载寄存器ARR
自动重装载寄存器ARR用来存放于计数器CNT比较的值,如果计数器计数到两个值相等时九递减重复计数器RCR。
重复计数器RCR
对于高级控制寄存器,当定时器发生上溢或下溢事件时递减重复计数器的值,只有当重复计数器的值为0时才会更新事件。
输入捕获
输入捕获可以对输入的信号的上升沿,下降沿或者双边沿进行捕获,

输入捕获的大概原理:当捕获到信号的跳变沿的时候,把计数器CNT的值锁存到捕获寄存器CCR中,然后把前后两次捕获到的CCR寄存器中的值相减,就可以推算处脉宽或频率。
输入捕获具体过程
需要被测量的信号从定时器的外部引脚 TIMx_CH1/2/3/4 进入(以下被测量信号统称TIx)。当输入的信号有高频干扰时我们需要对输入信号进行滤波。根据采样定律知,采样的频率必须大于等于两倍的输入信号的频率。然后通过边沿检测器来设置信号在捕获的时候是什么边沿有效。
捕获通道IC1/2/3/4,每个捕获通道都有相对应的捕获寄存器CCR1/2/3/4,当发生捕获的时候,计数器 CNT 的值就会被锁存到捕获寄存器中。捕获通道输出的信号会经过一个预分频器,用于决定发生多少个事件时进行一次捕获。(捕获\比较寄存器这俩共用一个寄存器,用哪一个取决于初始化的结果)
输出比较
输出比较就是通过定时器的外部引脚对外输出控制信号,有八种模式。

当计数器CNT的值跟比较寄存器CCR的值相等的时候,输出参考信号OCxREF的信号极性就会改变,OCxREF高电平为有效电平,低电平为无效电平,同时产生比较中断,响应的标志位会置位。然后参考信号经过一系列的控制后就会成为真正的输出信号OCx/OCxN。
在生成的参考波形 OCxREF 的基础上,可以插入死区时间,用于生成两路互补的输出信号 OCx和 OCxN(通道1~3才有互补信号,通道4没有,其余通道跟通道1-3相同),死区时间的大小必须根据与输出信号相连接的器件及其特性来调整。然后这两路信号就进入输出控制电路。进入输出控制电路的信号会被分成两路,一路是原始信号,一路是被反向的信号。
断路功能
断路功能就是电机控制的刹车功能,可以控制相关位状态来修改输出信号电平。

输入捕获的应用
一般应用在脉冲跳变沿时间的测量,或是PWM输入检测。
1、测量频率:当捕获通道TIX上出现上升沿是,会发生第一次捕获,此时计数器CNT的值会被锁存到捕获寄存器CCR中,而且还会进入到捕获中断,在中断中用一个变量来记录当前CNT的值,并清除捕获标记以便下一次捕获。当检测到第二次上升沿时,会发生第二次捕获,CNT的值被锁存到捕获寄存器CCR中,进入到捕获中断中,并在捕获中断中用一个变量记录当前CNT的值,并清除捕获标记以便下一次捕获。前后这两次CNT的值相减就可以算出信号的周期和频率。
2、测量脉宽:当捕获通道TIX上出现上升沿是,会发生第一次捕获,此时计数器CNT的值会被锁存到捕获寄存器CCR中,而且还会进入到捕获中断,在中断中用一个变量来记录当前CNT的值,并清除捕获标记以便下一次捕获。然后把捕获边沿改为下降沿捕获,党下降沿来到时,发生第二次捕获,CNT的值被锁存到捕获寄存器CCR中,进入到捕获中断中,并在捕获中断中用一个变量记录当前CNT的值,并清除捕获标记以便下一次捕获。然后把捕获边沿改回上升沿捕获。
PWM输入模式
PWM输入模式是输入捕获的一个特例,只能使用通道1和通道2。使用PWM输入模式时,一个输入通道TIX会占用两个捕获通道ICX,所以一个定时器在使用PWM输入模式时做多使用两个输入通道。
具体步骤:PEM信号有输入通道进入,然后信号会被分开两路,一路是周期,另一路是占空比。可在程序中设置哪一路信号作为触发输入,作为触发输入的信号对应的就是周期信号。作为触发输入的信号还需要配置触发极性,另外一路硬件会自动配置。
在这里插入图片描述PWM信号有的呼入通道TIX进入,配置记号触发信号陪且上升沿捕获。当上升沿到来时IC1和IC2同时捕获,计数器CNT清零。到了下降沿时,IC2捕获,CNT的值被锁存到捕获寄存器CCR2中。到了下一个上升沿,IC1捕获,计数器CNT的值被锁存到CCR1中。则由图知,CCR2+1就是脉宽,CCR1+1测量的就是周期。
输出比较应用
PWM输出就是对外输出占空比可调的方波信号,信号频率由自动重装载寄存器ARR决定,占空比由比较寄存器CCR决定。
以计数器 CNT 计数的方向不同还分为边沿对齐模式和中心对齐
模式。
1、PWM 边沿对齐模式:在递增模式下,计数器从0开始计数到ARR的值,并生成计数器上溢事件。在边沿对齐模式下,计数器CNT只工作在一种模式,这里以 CNT 工作在递增模式为例:设置好CCR和ARR的值,当CNT<CCR的值时,参考信号输出高电平,比较中断寄存器置位,当CCR<=CNT<=ARR时,参考信号输出低电平,这样,通过调节ARR和CCR的值,就能输出想要的频率和占空比的PWM信号。
在这里插入图片描述

2、PWM中心对齐模式;在中心对齐模式,计数器CNT时工作在递增\递减模式。开始时,计数器CNT从0开始计数到自动重装载值减1(ARR-1),生成计数器上溢事件;然后计数器自动重装载值开始向下基础到1并生成计数器下溢事件。
如下图,在第一阶段时,计数器工作在递增模式下,从0开始计数,当CNT<CCR 的值时,参考信号为有效的高电平,当CCR<=CNT<=ARR时,参考信号输出无效的低电平。在第二阶段,计数器CNT工作在递减模式,从ARR 的值开始递减,当CNT>CCR时,参考信号输出有效的高电平。
在这里插入图片描述
定时器输出PWM波代码设置
选用高级定时器1
一、初始化GPIO
1、设置GPIO初始化结构体变量,开启定时器1所用GPIO的时钟。
2、初始化GPIO结构体,使用服用推挽输出。
3、调用GPIO初始化函数,把配置好的结构体变量写入寄存器。
二、初始化时基
1、设置时基初始化结构体变量
2、根据结构体成员配置时基结构体,向上计数模式
3、调用时基初始化函数,把配置好的结构体变量写入寄存器。
三、PWM输出初始化
1、设置输出比较初始化结构体变量
2、根据结构体成员配置时基结构体,选用TIM脉冲宽度调制模式1,且互补输出不使能,设置输出极性为高,空闲电平为低。
3、初始化高级定时器1的输出通道(每个定时器都有四个输出通道)
4、使能高级定时器1的自动重装载寄存器
5、使能PWM输出
6、使能各个输出通道上的预装载寄存器
7、使能高级定时器1

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值