4. STM32CubeMX配置(下):定时器TIM2配置为PWM输出(CH1-CH4)、PWM频率与占空比计算、GPIO引脚分配与核对
好,咱们接着上一讲继续。ADC那边配置完了,现在轮到PWM了。这一章我带你把TIM2的四个通道全配成PWM输出,顺便把频率和占空比怎么算彻底讲明白。最后别忘了核对引脚,这一步出问题,板子可是会冒烟的。
4.1 TIM2的PWM模式配置
在CubeMX里,找到左侧的Timers → TIM2。我习惯先把Clock Source选为Internal Clock,这样TIM2的时钟就来自APB1总线。然后往下翻,看到Channel1到Channel4,全部选成PWM Generation CHx。
配置完通道模式后,重点来了——Parameter Settings选项卡。这里需要填三个关键参数:Prescaler(预分频器)、Counter Period(自动重装载值)、以及Pulse(脉冲宽度)。
| 参数 | 说明 | 我的建议值 |
|---|---|---|
| Prescaler (PSC) | 分频系数,决定计数时钟频率 | 71 |
| Counter Mode | 计数方向,选Up(向上计数) | Up |
| Counter Period (ARR) | 自动重装载值,决定PWM周期 | 999 |
| Auto-reload preload | 使能预装载,防止更新瞬间波形异常 | Enable |
| CH1~CH4 Pulse | 初始占空比对应的计数值 | 250 / 500 / 750 / 999 |
4.2 PWM频率与占空比计算
说白了,PWM的频率和占空比就是两个公式的事。但很多人栽在时钟树上,所以我先给你理清时钟路径。
TIM2挂在APB1上。如果APB1的时钟是72MHz(一般STM32F1系列默认是这样),那么TIM2的输入时钟就是72MHz。经过预分频器PSC后,计数器的时钟频率变成:
CK_CNT = 72MHz / (PSC + 1) = 72MHz / (71 + 1) = 1MHz
也就是说,计数器每1微秒加1。然后ARR决定了计数周期:
PWM频率 = CK_CNT / (ARR + 1) = 1MHz / (999 + 1) = 1kHz
所以,咱们配出来的PWM频率就是1kHz,周期1毫秒。占空比呢?由Pulse值决定:
占空比 = Pulse / (ARR + 1) × 100%
CH1: 250 / 1000 = 25%
CH2: 500 / 1000 = 50%
CH3: 750 / 1000 = 75%
CH4: 999 / 1000 = 99.9%
- PWM频率 = 定时器时钟 / (PSC + 1) / (ARR + 1)
- 占空比 = Pulse / (ARR + 1) × 100%
你想想看,如果我想让频率变成10kHz,怎么办?把ARR改成99就行。但要注意,ARR变小后,占空比的精度也会降低。这就是为什么高频PWM的调节精度不如低频的。我在做电机控制时,一般选10kHz~20kHz,既能避开人耳噪声,又能保证足够的占空比分辨率。
4.3 GPIO引脚分配与核对
配置完TIM2后,CubeMX会自动把PWM输出映射到对应的GPIO引脚上。但自动分配不一定是你想要的,所以必须手动核对。
切换到Pinout View,找到TIM2的四个通道对应的引脚:
| 通道 | 默认引脚(STM32F103C8T6) | 复用功能 |
|---|---|---|
| TIM2_CH1 | PA0 | AF2 (TIM2) |
| TIM2_CH2 | PA1 | AF2 (TIM2) |
| TIM2_CH3 | PA2 | AF2 (TIM2) |
| TIM2_CH4 | PA3 | AF2 (TIM2) |
在Pinout View里,这些引脚应该显示为TIM2_CH1之类的绿色标签。如果显示的是GPIO_Input或别的,说明引脚冲突了。我遇到过最坑的一次,是PA0同时被ADC和TIM2占用,结果两个功能都跑不起来。
核对无误后,在GPIO Settings里检查一下每个引脚的配置:
- Output level: 建议选Low,防止上电瞬间输出高电平
- Mode: 选Alternate Function Push-Pull
- Pull-up/Pull-down: 一般选No pull,除非你外部电路有特殊要求
- Maximum output speed: 选High,PWM信号需要快速翻转
嗯,到这里,TIM2的PWM配置就完成了。你可以点一下Generate Code,看看CubeMX生成的初始化代码。下一章咱们会深入代码层面,看看HAL库是怎么初始化这些寄存器的。
4.4 本章知识结构图
下面这张图帮你梳理了TIM2 PWM配置的完整流程,从时钟到引脚,每一步都串起来了。
这张图从左到右展示了配置的五个关键步骤。每一步的参数都会影响最终波形。我建议你对照自己的CubeMX配置,一步步检查,确保没有遗漏。