PWM(脉宽调制)通过调节高电平时间占整个周期的比例(占空比),控制负载设备的功率。
2.1 PWM 基本原理
PWM 信号的频率决定了调制速度。
占空比(Duty Cycle)决定了输出的平均电压:
0% 占空比:信号始终为低。
50% 占空比:高低电平时间相等。
100% 占空比:信号始终为高。
2.2 PWM 配置步骤
1. STM32CubeMX 配置
选择通用定时器(如 TIM3),设置工作模式为 PWM Generation。
选择对应的通道(如 CH1)。
配置频率和占空比:
频率 = 时钟频率 / (预分频器 + 1) / (ARR + 1)。
占空比 = 比较值(CCR) / 自动重装值(ARR)。
使能 GPIO 复用功能,连接到 TIM 的输出通道(如 PA6 对应 TIM3_CH1)。
生成代码。
2. 使用 HAL 库初始化 PWM
示例代码:
c
复制代码
// 初始化 TIM3 PWM
TIM_HandleTypeDef htim3;
htim3.Instance = TIM3;
htim3.Init.Prescaler = 7999; // 预分频器
htim3.Init.CounterMode = TIM_COUNTERMODE_UP;
htim3.Init.Period = 999; // 自动重装值
htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
HAL_TIM_PWM_Init(&htim3);
// 配置 PWM 通道
TIM_OC_InitTypeDef sConfigOC;
sConfigOC.OCMode = TIM_OCMODE_PWM1; // PWM 模式 1
sConfigOC.Pulse = 500; // 占空比 50%
sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_1);
// 启动 PWM
HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_1);
|