前言 首先我们来了解一下 PWM 的概念,PWM(Pulse Width Modulation)即为脉冲宽度调制。放到我们这里,简单点说,就是利用单片机产生指定占空比和指定频率的方波。例如,单片机输出了一个高电平 0.5s,低电平 0.5s 的方波。那么,这个方波的占空比为 0.5/(0.5+0.5)=50%,高低电平各占一半,频率为周期(0.5s+0.5s)的倒数,即为 1Hz。如果高电平为 0.2s,低电平为 0.8s 则占空比为 0.2/(0.2+0.8)=20%,其他情况依次类推。
以单片机 STM32F103C8T6 为例讲解 PWM 的产生,通过单片机的内部定时器,可以在 IO 口输出相应的 PWM 信号。该单片机有 8 个定时器,即 TIM1-TIM8。其中,TIM1、TIM8 为高级定时器,每个都可以产生多达 7 路 PWM 信号,从 7 个 IO 口同时输出。TIM2-TIM5 为通用定时器,每个同时产生 4 路 PWM 信号。TIM6、TIM7 为基本定时器无法产生 PWM 信号。
实现功能:
配置 TIM4 的 4 路 PWM 同时输出频率为 1Hz 的信号,其中: - 第一路(TIM4_CH1)占空比 10%
- 第二路(TIM4_CH2)占空比 20%
- 第三路(TIM4_CH3)占空比 50%
- 第四路(TIM4_CH4)占空比 80%
第一步:确定 TIM4 的 4 路 PWM 输出对应的 IO 口 查看官方数据手册《STM32F103x8_B 增强型系列中容量产品数据手册》,P20 页,截图如下:
|