首页 > 其他 > 详细

STM32PWM之——定时器(1)

时间:2019-11-27 23:44:01      阅读:202      评论:0      收藏:0      [点我收藏+]
  • 定时器功能简介

  STM32 一共有 8 个都为 16 位的定时器。其中 TIM6TIM7 是基本定时器;TIM2TIM3TIM4TIM5 是通用定时器; TIM1 TIM8 是高级定时器。这些定时器使 STM32 具有定时、信号的频率测量、信号的 PWM 测量、 PWM输出、三相 6 步电机控制及编码器接口等功能。

 

  • 基本定时器 

  基本定时器TIM6 TIM7,这两个定时器只具备最基本的定时功能,就是累加的时钟脉冲数超过预定值时,能触发中断或触发 DMA 请求。由于在芯片内部与 DAC 外设相连,可通过触发输出驱动 DAC。也可以作为其它通用定时器的时钟基准。 

  这两个基本定时器使用的时钟源都是 TIMxCLK,时钟源经过 PSC 预分频器输入至脉冲计数器(TIMx_CNT) ,基本定时器只能工作在向上计数模式,在重载寄存器(TIMx_ARR) 保存的是定时器的溢出值。工作时, 脉冲计数器 TIMx_CNT 由时钟触发进行计数,当 TIMx_CNT 的计数值 X 等于重载寄存器 TIMx_ARR 中保存的数值 N 时,产生溢出事件,可触发中断或 DMA 请求。然后 TIMx_CNT 的值重新被置为 0,重新向上计数。 

  • 通用定时器

  通用定时器为TIM2~TIM5,主要用在测量输入脉冲的频率、脉冲宽与输出 PWM 脉冲的场合,还具有编码器的接口。
  通用定时器比基本定时器多出的强大功能,就是因为通用定时器多出了一种寄存器——捕获/比较寄存器, TIMx_CCR(capture/compare register 简称CCR),它在输入时被用于捕获(存储) 输入脉冲在电平发生翻转时,脉冲计数器TIMx_CNT 的当前计数值,从而实现脉冲的频率测量;在输出时被用来存储一个脉冲数值,把这个数值用于与脉冲计数器 TIMx_CNT 的当前计数值进行比较,根据比较结果进行不同的电平输出 。

  • pwm输出:

  通用定时器可以利用 GPIO 引脚进行脉冲输出,在配置PWM输出功能时(或者比较输出功能时),捕获/比较寄存器 TIMx_CCR 被用作比较功能,配置脉冲计数器TIMx_CNT 为向上计数,重载寄存器 TIMx_ARR 被配置为 N,即 TIMx_CNT的当前计数值数值 X TIMxCLK 时钟源的驱动下不断累加,当 TIMx_CNT 的数值 X 大于 N 时,会重置 TIMx_CNT 数值为 0 重新计数。而在 TIMxCNT 计数的同时, TIMxCNT 的计数值 X 会与比较寄存器TIMx_CCR 预先存储了的数值 A 进行比较,当脉冲计数器 TIMx_CNT 的数值 X小于比较寄存器 TIMx_CCR 的值 A 时, 输出高电平(或低电平),相反地,当脉冲计数器的数值 X 大于或等于比较寄存器的值 A 时,输出低电平(或高电平)。

  如此循环,得到的输出脉冲周期就为重载寄存器 TIMx_ARR 存储的数值(N+1)乘以触发脉冲的时钟周期,其脉冲宽度则为比较寄存器 TIMx_CCR 的值A 乘以触发脉冲的时钟周期,即输出 PWM 的占空比为 A/(N+1)

  • 测量 PWM 输入 

  当定时器被配置为输入功能时,可以用于检测输入到 GPIO 引脚的信号(频率检测、输入 PWM 检测),此时捕获/比较寄存器 TIMx_CCR 被用作捕获功能。测量脉冲宽,需要两个捕获寄存器,在输入脉冲的不同边沿(pwm波的上升沿IC1和下降沿IC2)对TIM_CNT 的计数值进行捕获,得到这个 T1脉冲占空比为(N+1)/(A+1)。

  要测量的PWM 脉冲通过 GPIO 引脚输入到定时器的脉冲检测通道把脉冲计数器 TIMx_CNT 配置为向上计数,重载计数器重载寄存器TIMx_ARR N 值配置为足够大。

  在输入脉冲 TI1 的上升沿到达时,触发 IC1 IC2 输入捕获中断,这时把脉冲计数器 TIMx_CNT 的计数值复位为 0,于是 TIMx_CNT 的计数值 X TIMxCLK 的驱动下从 0 开始不断累加,直到 TI1 出现下降沿,触发 IC2 捕获事件,此时捕获寄存器 TIMx_CCR2 把脉冲计数器 TIMx_CNT 的当前值 N1 存储越来,而 TIMx_CNT 继续累加,直到 TI1 出现第二个上升沿,触发了 IC1 捕获事件,此时 TIMx_CNT 的当前计数值 N2 被保存到 TIMx_CCR1

  很明显 TIMx_CCR1(1)的值乘以 TIMxCLK 的周期,即为待检测的 PWM输入脉冲周期, TIMx_CCR2(加 1) 的值乘以 TIMxCLK 的周期,就是待检测的PWM 输入脉冲的高电平时间(小于预留值时为高电平),有了这两个数值,就可以计算出 PWM 脉冲的频率、占空比了。

  • 定时器的时钟源

  所有定时器(包括基本、通用、高级)使用内部时钟时,定时器的时钟源都被称为 TIMxCLK,但 TIMxCLK 的时钟来源并不是完全一样的。

  常见的配置中,AHB=72MHz,而APB1预分频器系数被配置为2,则PCLK1刚好达到最大值36MHz。如果APB1的分频系数不为1,则TIM2~7的时钟TIMxCLK = (AHB/2) × 2=72MHz。APB2预分频器的分频系数被配置为1时,PCLK2刚好达到最大值72MHz,而TIMxCLK则直接等于APB2分配器的输出。 

 









STM32PWM之——定时器(1)

原文:https://www.cnblogs.com/loveves/p/Ves.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!