STM32CubeMX 两种模式完整配置教程
前置说明
实验参数:ARR=999,定时器向上计数,APB定时器时钟自行匹配;分两套配置:
-
Toggle翻转模式(固定50%占空,四路移相,本次实验)
-
PWM模式1(任意可调占空比)
一、CubeMX配置:Toggle翻转模式(固定50%占空、移相输出)
1. 定时器基础参数配置
-
左侧选择TIM(如TIM1/TIM2通用高级/通用定时器),通道CH1~CH4全部开启为 Output Compare No Output
-
进入「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通道设置:
-
Mode:Output Compare Toggle Mode 翻转模式
-
Pulse:这里先随便填,代码里动态改写CCR1/2/3/4实现移相
-
CH Polarity:High(默认初始低电平,匹配翻转)
-
Fast Mode:Disable
-
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全部配置:
-
Mode:PWM Generation CH1(PWM模式1)
-
Pulse:初始占空计数值(例500对应50%占空)
-
CH Polarity:High
-
Fast Mode:Disable
-
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)*分频周期 |
四、常见踩坑说明
-
Toggle模式不要调用
HAL_TIM_PWM_Start,必须用HAL_TIM_OC_Start,否则波形异常; -
想要修改CCR无毛刺:PWM模式开启预装载;Toggle模式无预装载,修改立即生效;
-
通道必须选择芯片对应复用引脚,CubeMX会自动分配GPIO为Alternate Function;
-
ARR=999是1000个计数脉冲,计算相位/占空时记得
CCR+1再除以1000。
