stm32之PWM学习

Posted codeworkerliming

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了stm32之PWM学习相关的知识,希望对你有一定的参考价值。

下图是一个STM32普通PWM形成的图形原理说明

技术分享图片

自动重装载寄存器(ARR)用于定波形的频率(即周期)、捕获比较寄存器(CCRx)(用于确定占空比的)

如图为向上计数:
     定时器重装载值为ARR,比较值CCRx
     t时刻对计数器值和比较值进行比较
     如果计数器值小于CCRx值,输出低电平
     如果计数器值大于CCRx值,输出高电平

PWM的一个周期
    定时器从0开始向上计数
    当0-t1段,定时器计数器TIMx_CNT值小于CCRx值,输出低电平
    t1-t2段,定时器计数器TIMx_CNT值大于CCRx值,输出高电平
    当TIMx_CNT值达到ARR时,定时器溢出,重新向上计数...循环此过程
    至此一个PWM周期完成

影响因素
    ARR : 决定PWM周期(在时钟频率一定的情况下,当前为默认内部时钟CK_INT)
    CCRx : 决定PWM占空比(高低电平所占整个周期比例)

下图是一个spwm的图形

技术分享图片

 

一. STM32F103通用定时器简介:

  1.  通用定时器是一个可编程预分频器驱动的16位自动装载计数器
  2.  适用于:  测量输入信号的脉冲长度(输入捕获)、产生输出波形(输出比较和PWM)。
  3. 每个定时器都是完全独立的,都可以同步操作。

-----------------------------------------------------以下为复制粘贴---------------------------------------------------------

 

STM32 的通用 TIMx (TIM2、TIM3、TIM4 和 TIM5)定时器功能特点包括:
  ①位于低速的APB1总线上(APB1)
  ②16 位向上、向下、向上/向下(中心对齐)计数模式,自动装载计数器(TIMx_CNT)。
  ③16 位可编程(可以实时修改)预分频器(TIMx_PSC),计数器时钟频率的分频系数 为 1~65535 之间的任意数值。
  ④4 个独立通道(TIMx_CH1~4),这些通道可以用来作为: 
  输入捕获 
  输出比较
  PWM 生成(边缘或中间对齐模式) 
  单脉冲模式输出 
⑤可使用外部信号(TIMx_ETR)控制定时器和定时器互连(可以用 1 个定时器控制另外一个定时器)的同步电路。

如下事件发生时产生中断/DMA(6个独立的IRQ/DMA请求生成器): 
①更新:计数器向上溢出/向下溢出,计数器初始化(通过软件或者内部/外部触发) 
②触发事件(计数器启动、停止、初始化或者由内部/外部触发计数) 
③输入捕获 
④输出比较 
⑤支持针对定位的增量(正交)编码器和霍尔传感器电路 
⑥触发输入作为外部时钟或者按周期的电流管理
STM32 的通用定时器可以被用于测量输入信号的脉冲长度(输入捕获)或者产生输出波形(输出比较和 PWM)等。   
使用定时器预分频器和 RCC 时钟控制器预分频器,脉冲长度和波形周期可以在几个微秒到几个毫秒间调整。STM32 的每个通用定时器都是完全独立的,没有互相共享的任何资源。

---------------------------------------------------------------------------------------------------------------------------------

二. PWM是什么

OK,首先PWM全称为“Pulse Width Modulation”。中文翻译为:脉冲宽度调制。

脉冲宽度指的是 脉冲持续的时间,既高电平或低电平保持(持续)的时间。

而PWM通俗的说就是人为的(通过微处理器)去控制电平高低保持的时间。

好的,这里引出一个新名词,占空比:在一个脉冲的循环中,通电时间相对于总时间所占的比例。

 

以上是关于stm32之PWM学习的主要内容,如果未能解决你的问题,请参考以下文章

STM32H7教程第37章 STM32H7的LPTIM低功耗定时器应用之PWM

STM32H7教程第41章 STM32H7的BDMA应用之控制任意IO做PWM和脉冲数控制

如何让stm32产生多路输出 PWM 最好有代码

STM32之呼吸灯实验

STM32笔记之PWM输出,调节频率及占空比

stm32寄存器版学习笔记05 PWM