PWM的两种模式--STM32CubeMX配置教程

STM32CubeMX 两种模式完整配置教程

前置说明

实验参数:ARR=999,定时器向上计数,APB定时器时钟自行匹配;分两套配置:

  1. Toggle翻转模式(固定50%占空,四路移相,本次实验)

  2. PWM模式1(任意可调占空比)

一、CubeMX配置:Toggle翻转模式(固定50%占空、移相输出)

1. 定时器基础参数配置

  1. 左侧选择TIM(如TIM1/TIM2通用高级/通用定时器),通道CH1~CH4全部开启为 Output Compare No Output

  2. 进入「Configuration」定时器配置页

Prescaler (PSC) 预分频

按需填写,例:71(72MHz时钟下分频到1MHz定时器计数时钟)

Counter Mode:Up 向上计数

Counter Period (ARR):999

Auto-reload preload:Disable(简单场景)

Clock Division:CKD_0

Repetition Counter:0(高级定时器才显示)

2. 通道输出比较模式配置(关键)

分别点开CH1/CH2/CH3/CH4通道设置:

  1. Mode:Output Compare Toggle Mode 翻转模式

  2. Pulse:这里先随便填,代码里动态改写CCR1/2/3/4实现移相

  3. CH Polarity:High(默认初始低电平,匹配翻转)

  4. Fast Mode:Disable

  5. Complementary Output:Disable(无互补通道)

3. 生成代码后HAL库使用

1)开启定时器输出

复制代码
HAL_TIM_OC_Start(&htimx, TIM_CHANNEL_1);
HAL_TIM_OC_Start(&htimx, TIM_CHANNEL_2);
HAL_TIM_OC_Start(&htimx, TIM_CHANNEL_3);
HAL_TIM_OC_Start(&htimx, TIM_CHANNEL_4);

2)动态修改CCR实现不同相位(ARR=999,总计数1000)

复制代码
// 相位25% CCR=249
__HAL_TIM_SET_COMPARE(&htimx, TIM_CHANNEL_1, 249);
// 相位50% CCR=499
__HAL_TIM_SET_COMPARE(&htimx, TIM_CHANNEL_2, 499);
// 相位75% CCR=749
__HAL_TIM_SET_COMPARE(&htimx, TIM_CHANNEL_3, 749);
// 相位100% CCR=999
__HAL_TIM_SET_COMPARE(&htimx, TIM_CHANNEL_4, 999);

特性

  • 无论CCR改成多少,四路输出占空比永远50%;

  • 只修改CCR只会平移波形相位,频率完全统一。

二、CubeMX配置:标准PWM模式1(可调任意占空比)

1. 定时器基础配置(同上)

PSC、ARR=999、向上计数不变。

2. 通道PWM模式设置

通道CH1~CH4全部配置:

  1. Mode:PWM Generation CH1(PWM模式1)

  2. Pulse:初始占空计数值(例500对应50%占空)

  3. CH Polarity:High

  4. Fast Mode:Disable

  5. Auto-reload preload:Enable(双缓冲,无毛刺)

3. HAL库代码操作

启动PWM输出

复制代码
HAL_TIM_PWM_Start(&htimx, TIM_CHANNEL_1);
HAL_TIM_PWM_Start(&htimx, TIM_CHANNEL_2);
HAL_TIM_PWM_Start(&htimx, TIM_CHANNEL_3);
HAL_TIM_PWM_Start(&htimx, TIM_CHANNEL_4);

动态修改占空比(频率不变)

复制代码
__HAL_TIM_SET_COMPARE(&htimx, TIM_CHANNEL_1, 100); // 10%占空
__HAL_TIM_SET_COMPARE(&htimx, TIM_CHANNEL_2, 300); // 30%占空
__HAL_TIM_SET_COMPARE(&htimx, TIM_CHANNEL_3, 600); // 60%占空
__HAL_TIM_SET_COMPARE(&htimx, TIM_CHANNEL_4, 900); // 90%占空

特性

  • 修改CCR直接改变占空比;

  • 缺点:无法单独移相,CCR同时控制电平翻转点。

三、两种模式CubeMX关键配置区别汇总

配置项 Toggle翻转模式(50%固定占空移相) PWM模式1(可调占空)
Channel Mode Output Compare Toggle Mode PWM Generation CHx
HAL启动函数 HAL_TIM_OC_Start HAL_TIM_PWM_Start
CCR作用 仅控制相位偏移 控制占空比+相位
占空比 固定50% 0~100%自由调节
PWM周期 2*(ARR+1)*分频周期 (ARR+1)*分频周期

四、常见踩坑说明

  1. Toggle模式不要调用HAL_TIM_PWM_Start,必须用HAL_TIM_OC_Start,否则波形异常;

  2. 想要修改CCR无毛刺:PWM模式开启预装载;Toggle模式无预装载,修改立即生效;

  3. 通道必须选择芯片对应复用引脚,CubeMX会自动分配GPIO为Alternate Function;

  4. ARR=999是1000个计数脉冲,计算相位/占空时记得 CCR+1 再除以1000。