STM32定时器入门

STM32定时器(TIM)入门

1.定时器的本质

在这里插入图片描述
定时器其实就是计数器,时基单元是定时器的主要组成部分。
时基单元由:

  • PSC预分频器(可以对计数器的时钟进行分频)
  • CNT计数器
  • 自动重装载寄存器(ARR)(计数的目标值)

三部分组成。这三个寄存器各占16bit的大小,所以PSC分频器、自动重装载和CNT计数器的数值范围均为(0~65535),所以单个定时器可定时的最长时间约为:
(默认时钟频率为72MHZ)59.65s(65536*65536/72000000)
定时流程:
CK_PSC经PSC分频器分频后输入CNT计数器(这里以向上计数为例),每检测到一个上升沿就计一个数,直到数值与自动重装载寄存器中的值相同,计数器溢出,产生更新事件或者更新中断,完成依次定时。例如我们要记1ms,那么我们可以设置PSC预分频器的数值为72-1,自动重装载寄存器设为1000-1,那么CNT计数器完成一轮计数的时间就为 1/72000000*72*1000 = 1ms
在这里插入图片描述

CNT计数器可对输入的CK_CNT时钟(经PSC预分频器分频后)进行计数,计数的方式有向上计数、向下计数或者向上向下双向计数三种方式。

接下来我们讲讲定时器的两个实用功能

2.输出比较

主要用于输出PWM信号来驱动电机。

在这里插入图片描述

  • CCR1包含了装入当前捕获/比较1寄存器的值,用于与CNT计数器进行比较。
  • 我们可以通过TIMx_CCMR1中的OC1M来设置输出模式控制器的输出模式,这里选择了PWM模式1,在向上计数时,一旦TIMx_CNT>TIMx_CCR1时通道1为有效电平,否则为无效电平;在向下计数时,一旦TIMx_CNT>TIMx_CCR1时通道1为无效电平(OC1REF=0),否则则为有效电平(OC1REF=1)
  • 可以通过设置TIMx_CCER寄存器中的CC1P来选择输出极性,并通过设置TIMx_CCER寄存器中的CC1E来使输出使能。

PWM基本结构如下:
在这里插入图片描述
接下来我们讲讲PWM的频率、占空比、分辨率是如何计算出来的

在这里插入图片描述

其中橙线代表自动重装载寄存器ARR,红线代表捕获/比较寄存器CCR,蓝线代表CNT。

由上图可知,当CNT<CCR时,输出有效电平;当CNT>CCR时,输出无效电平。分析可知,PWM的频率与计数器产生计数溢出的频率相同,Freq = CK_PSC / (PSC + 1) / (ARR + 1),PWM的占空比等于CCR的值比上ARR的值,Duty = CCR / (ARR + 1),PWM的分辨率表示精确度(所有CCR可以取到的最大值的倒数), Reso = 1 / (ARR + 1)

3.输入捕获

主要用于测量PWM波的频率 占空比

在这里插入图片描述

  • 输入滤波器可以避免外部毛刺信号的误触发,抗噪声。
  • 边沿检测器可以指定高电平触发或者低电平触发,当出现指定的电平时,边沿检测电路就会触发后续电路执行动作。
  • 信号可以选择直接输出或者交叉连接。

比如TI1FP1可以输出给IC1也可以交叉输出给IC2。每来一个触发信号,CNT的值,就会向CCR转运一次,转运的同时会发生一个捕获事件,这个事件会在状态寄存器置标志位,同时也可以产生中断。比如我们配置上升沿触发捕获,每来一个上升沿,CNT转运到CCR一次,又因为这个CNT计数器是由内部的标准时钟驱动的,所以CNT的数值,其实就可以用来记录两个上升沿之间的时间间隔,这个时间间隔就是周期,再取倒数就是测周法测得的频率了。每次捕获之后,我们都要把CNT清零一下,这样下次上升沿再捕获的时候,取出的CNT才是两个上升沿的时间间隔,这个在一次捕获后自动将CNT清零的步骤,我们可以用主从触发模式,自动来完成。

输入滤波器,以采样频率对输入信号进行采样,当连续N个值都为高电平,输出才为高电平,当连续N个值都为低电平时,输出才为低电平,如果信号出现高频抖动,导致连续采样N个值不全都一样,那输出就不会变化,这样就可以达到滤波的效果,采样频率越低,采样个数N越大,滤波效果就越好
在这里插入图片描述
频率测量的方式及中界频率的计算:
在这里插入图片描述

3.1基本结构

测量PWM频率

在这里插入图片描述
频率 :时钟频率(PSC分频后的时钟频率)/CCR1

  • 我们需要读取频率的时候,只需要读取CCR1得到N,在计算fc/N,就可以了。由于ARR最大也只能装载65535个数,所以如果信号频率太低,可能导致CNT计数器溢出。
  • 当我们不需要读取的时候,整个电路全自动的测量,不需要占用任何软件资源。

3.2PWMI模式

同时测量周期和占空比

在这里插入图片描述

  1. 首先,TI1FP1配置上升沿触发,触发捕获和清零CNT,正常地捕获周期,这时我们再来一个TI1FP2,配置为下降沿触发,通过交叉通道,去触发通道2的捕获单元。

  2. 最开始上升沿,CCR1捕获,同时清零CNT,之后CNT一直自增,然后,在下降沿这个时刻,触发CCR2捕获,所以这时CCR2的值,就是CNT所记录的高电平期间的计数值,CCR2捕获,并不触发CNT清零,所以CNT继续自增,知道下一次上升沿,CCR1捕获周期,CNT清零。

  3. 这样执行之后,CCR1就是一整个周期的计数值,CCR2就是高电平期间的计数值,我们用CCR2/CCR1就可以得到PWM的占空比了。使用两个通道来得到频率和占空比。

3.3主从触发模式

使用硬件全自动完成CNT的清零

在这里插入图片描述

  • 主模式可以将定时器内部的信号,映射到TRGO引脚,用于触发别的外设。

  • 从模式就是接受其他外设或者自身外设的一些信号,用于控制自身定时器的运行,也就是被别的信号控制。

  • 触发源选择,就是选择从模式的触发信号源的,可以认为是从模式的一部分。

    触发源选择,选择一个指定的信号,得到TRGI,TRGI去触发从模式,从模式可以在这个列表里,选择一项操作来自动执行。如果想完成让TI1FP1信号自动触发CNT清零,那么触发源选择就可以选择TI1FP1,从模式执行的操作就可以选择Reset的操作。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

YRr YRr

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值