STM32之定时器介绍

简介

  • STM32f103系列一共有8个16位的定时器;
  • 其中TIM6、TIM7是基本定时器,TIM2、3、4、5是通用定时器,TIM1、8是高级定时器;
  • 这些定时器使STM32具有定时、信号的频率测量、信号的PWM测量、PWM输出、三相6步电机控制及编码器接口等功能,适用于工业控制领域。

定时器工作分析

基本定时器
  • 基本定时器只具备最基本的定时功能,就是累加的时钟脉冲数超过预定值时,能触发中断或触发DMA请求;
  • 芯片内部与DAC外设相连,可通过触发输出驱动DAC,也可以作为其他通用定时器的时钟基准;
  • 使用的时钟源都是TIMxCLK,时钟源经过预分频器输入至脉冲计数器TIMx_CNT,基本定时器只能工作在向上计数模式,在重载寄存器TIMx_ARR中保存的是定时器的溢出值;
  • 工作时,脉冲计数器TIMx_CNT由时钟触发进行计数,当计数器的值x等于重载寄存器中保存的数值N时,产生溢出事件,可触发中断或DMA请求,然后计数器重新置0,重新向上计数;
通用定时器
  • 通用定时器除了基本的定时,它主要用在测量输入脉冲的频率、脉宽与输出PEM脉冲的场合,还具有编码器的接口,如下图所示:
    在这里插入图片描述
1.捕获/比较寄存器
  • 它在输入时被用于捕获(存储)输入脉冲在电平发生翻转时脉冲计数器的当前计数值,从而实现脉冲的频率测量;
  • 在输出时被用来存储一个脉冲数值,把这个数值用于与脉冲计数器的当前计数值进行比较,根据比较结果进行不同的电平输出。
2.PWM输出过程分析
  • 若配置脉冲计数器为向上计数,而重载寄存器被配置为N,即计数器的当前值x在时钟源的驱动下不断累加,当计数器的值大于N时,回充值计数器的数值为0并重新计数;
  • 在计数器计数的同时,计数器的计数值x会与比较寄存器TIMx_CCR预先存储的数值A进行比较。当计数器的值小于A时,输出高电平(或低电平),相反则反之;
  • 循环下去即得到的输出脉冲周期就为重载寄存器TIMx_ARR存储的数值(N+1)乘以触发脉冲的时钟周期,其脉宽则为比较寄存器的值A乘以触发脉冲的时钟周期,即输出PEM的占空比为A/(N+1).
3.PWM输入过程分析
  • 当定时器被配置为输入功能时,可以用于检测输入到GPIO引脚的信号,此时捕获/比较寄存器TIMx_CRR被用作捕获功能,简称捕获寄存器。
  • 下图为PWM输入时的脉冲宽度检测时序图;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-65BJ93Lb-1588150839825)(pwm_capture.jpg)]

  • 工作过程:要测量的PWM脉冲通过GPIO引脚输入到定时器的脉冲检测通道,为图中的TI1;
  • 在输入脉冲TI1的上升沿到达时,触发IC1和IC2输入捕获中断,这时把脉冲计数器的计数值复位为0,于是计数器的计数值X在时钟源的驱动下从0开始不断累加,直到TI1出现下降沿,触发IC2捕获事件,此时TIMx_CCR2把计数器的当前值2存储起来,计数器继续累加,直到TI1出现第二个上升沿,出发了IC1捕获事件,得到的当前计数值被保存到TIMX_CCR1中。
  • 根据保存的数值很容易得到占空比和周期。
4.定时器的时钟源
  • 通用定时器可以使用外部脉冲作为定时器的时钟源;
  • 使用外部时钟源时,要使用寄存器进行触发边沿、滤波器带宽的配置。
高级定时器
  • 此类定时器除了具有基本、通用定时器的所有功能外,还具有三相6步电机的接口、刹车功能及用于PWM驱动电路的死区时间控制,使其非常使用于电机控制。

  • 高级定时器结构如下图所示:
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tIfgiKbW-1588150839830)(advanced_timer.jpg)]

  • 相比较另外两种定时器,主要多出了BRK、DTG两个结构,具有了控制死区时间的控制功能;

  • 死区时间:在三相桥的PWM驱动电路中,上下两个桥臂的PWM驱动信号是互补的,即上下桥臂轮流导通,但实际上为了防止出现上下两个臂同时导通(会造成短路),在上下两臂切换时留一小段时间,上下臂都施加关断信号。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BXUGsSZF-1588150839835)(siqu.jpg)]

  • 在保证不出现短路的情况下,死区时间越短越好,时间太长会导致OCx或OCxN输出不正常.
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值