文章目录
一、 用STM32输出一路PWM波形
1.1 PWM
- PWM 简介:
- 脉冲宽度调制是一种模拟控制方式,根据相应载荷的变化来调制晶体管基极或 MOS 管栅极的偏置,来实现晶体管或 MOS 管导通时间的改变,从而实现开关稳压电源输出的改变。
- 这种方式能使电源的输出电压在工作条件变化时保持恒定,是利用微处理器的数字信号对模拟电路进行控制的一种非常有效的技术。
- 脉冲宽度调制是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中。
- PWM 控制的基本原理:
- 冲量相等而开头不同的窄脉冲加在具有惯性的环节上时,其效果基本相同。其中冲量指窄脉冲的面积;效果相同指环节输出响应波形基本相同。
- 用一系列等幅不等宽的脉冲来代替一个正弦半波。
- 其划分方式是将正弦半波分成 N 等分,可看成 N 个彼此相连的脉冲序列,宽度相等,但幅值不等;接下来使用矩形脉冲代替,而各个矩形脉冲等幅,不等宽,中点与脉冲序列重合,脉冲宽度按正弦规律变化,脉冲的总面积(冲量)与正弦半波相等。这个脉冲波形被称为 SPWM 波形,是一种极其典型的 PWM 波形。
-
1.2定时器实现 PWM 波形输出
-
PWM 工作过程
寄存器的值从 0 开始到 ARR 值的过程中:
当其比 CCRx 中的值小的时候,输出低电平(0);
当其值大于 CCRx 值时,输出高电平(1)。
从图中可以看出周期是由 ARR 决定的,跟定时器的时钟有关系,而占空比则跟 CCRx 有关。
-
PWM 通道
捕获/比较通道的输出部分(通道1):
- CCR1寄存器:捕获/比较值寄存器:设置比较值;
- CCMR1寄存器:OC1M[2:0]位:对于PWM方式下,用于设置PWM模式1或者PWM模式2;
- CCER寄存器:CC1P位:输入/捕获1输出极性。0:高电平有效,1:低电平有效。
- CCER寄存器:CC1E位:输入/捕获1输出使能。0:关闭,1:打开。
PWM输出的模式区别:
通过设置寄存器 TIMx_CCMR1 的 OC1M[2:0] 位来确定 PWM 的输出模式:
PWM 模式1:
CCR1寄存器在向上计数时,一旦 TIMx_CNT<TIMx_CCR1 时通道 1 为有效电平,否则为无效电平;
CCMR1寄存器在向下计数时,一旦 TIMx_CNT>TIMx_CCR1 时通道 1 为无效电平 (OC1REF=0),否则为有效电平 (OC1REF=1)。
PWM 模式2:
CCR1寄存器在向上计数时,一旦 TIMx_CNT<TIMx_CCR1 时通道 1 为无效电平,否则为有效电平;
CCMR1寄存器在向下计数时,一旦 TIMx_CNT>TIMx_CCR1 时通道 1 为有效电平,否则为无效电平。
注意:并未说明 1 就表示有效电平
-
定时器3的输出通道引脚
TIM3_CH1:PA6,完全重映像PC6
TIM3_CH2:PA7,完全重映像PC7
TIM3_CH3:PB0,完全重映像PC8
TIM3_CH4:PB1,完全重映像PC9 -
相关配置
捕获/比较模式寄存器1(TIMx_CCMR1):
在PWM输出模式下,确定PWM的模式、使能相应的预装载寄存器等操作。
捕获/比较使能寄存器(TIMx_CCER):
在PWM输出模式下,确定PWM的输出极性和输出使能。
捕获/比较寄存器1(TIMx_CCR1):
在PWM输出模式下,确定比较的值。
//PWM输出初始化函数
//arr:自动重装值
//psc:时钟预分频数