原理
PWM (Pulse Width Modulation)脉冲宽度调制是利用微处理器的数字输出来对模拟电路进行控制的一种非常有
效的技术,其控制简单、灵活和动态响应好等优点而成为电力电子技术最广泛应用的控制方式。
对于 STM32F1 芯片,要么输出高电平(3.3V),要么输出低电平(0),假如要输出 1.5V 的电压,就必须通过相应的处理,比如WM 输出,只要保证数字信号脉宽足够就可以使用 PWM 进行编码,从而输出 1.5V 的电压。
STM32F1 除了基本定时器 TIM6 和 TIM7,其他定时器都可以产生 PWM 输出。PWM 的输出其实就是对外输出脉宽可调(即占空比调节)的方波信号,信号频率由自动重装寄存器 ARR 的值决定,占空比由比较寄存器 CCR 的值决定。改变 CCR 寄存器内的值将导致 PWM 输出信号占空比的改变。占空比其实就是一个周期内高电平时间与周期的比值。
PWM 模式根据计数器 CNT 计数方式,可分为边沿对齐模式和中心对齐模式。
边沿对齐模式:计数器 CNT 从 0 计数到自动重载值(TIMx_ARR 寄存器的内容),然后重新从 0 开始计数并生成计数器上溢事件。
中心对齐模式:计数器 CNT 从 0 开始计数到自动重载值减 1(ARR-1),生成计数器上溢事件;然后从自动重载值开始向下计数到 1 并生成计数器下溢事件。之后从 0 开始重新计数。
PWM 输出比较模式总共有 8 种,具体由寄存器 CCMRx 的位 OCxM[2:0]配置。最常用PWM1和PWM2两种模式,区别之处就是输出电平的极性不同。由于我们的 LED 指示灯是低电平点亮,而我们希望当 CCR2 的值小的时候,LED 暗, CCR2 值大的时候,LED 亮,所以我们设置为 PWM1 模式。
步骤
- 对GPIO的IDR和ODR寄存器位操作进行封装(STM32F1系列通用)<