1. STM32F103的PWM功能概述
STM32F103系列微控制器作为意法半导体经典的Cortex-M3内核产品,其定时器模块提供了强大的PWM生成能力。在实际项目中,PWM(脉宽调制)技术被广泛应用于电机控制、LED调光、电源管理等场景。以TIM3定时器为例,它支持4路独立的PWM输出通道,能够满足大多数双路控制需求。
注意:STM32F103的定时器资源有限,TIM1和TIM8是高级定时器,TIM2-TIM5是通用定时器,TIM6和TIM7是基本定时器。选择TIM3实现双路PWM可以在资源占用和功能需求间取得平衡。
PWM输出的核心参数包括频率和占空比。频率决定了信号周期的长短,而占空比则决定了高电平在周期中的比例。例如,控制舵机通常需要50Hz的PWM信号(周期20ms),而LED调光可能需要更高频率(如1kHz)以避免肉眼可见的闪烁。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 硬件设计与引脚配置
2.1 定时器通道与引脚映射
STM32F103的PWM输出引脚与定时器通道存在固定对应关系,同时也支持部分重映射功能。以TIM3为例,其默认通道引脚分配如下:
| 通道 | 默认引脚 | 重映射引脚 | 典型应用场景 |
|---|---|---|---|
| CH1 | PA6 | PB4 | 电机控制、LED调光 |
| CH2 | PA7 | PB5 | 舵机控制、呼吸灯 |
| CH3 | PB0 | PC8 | 无刷电机驱动 |
| CH4 | PB1 | PC9 | 电源管理 |
当需要同时使用两路PWM时,建议优先选择同一定时器的不同通道,这样可以确保两路PWM的同步性。例如使用TIM3_CH1和TIM3_CH2时,它们的计数器基准完全相同,不会出现相位漂移问题。
2.2 外围电路设计要点
根据不同的应用场景,PWM输出端需要设计相应的外围电路:
电机驱动场景:
- 需外接H桥驱动芯片(如TB6612、L298N)
- 添加自举电容(通常0.1-1μF)确保高端MOSFET导通
- 配置死区时间(可通过TIMx_BDTR寄存器设置)
LED调光场景:
- 串联限流电阻(通常220Ω-1kΩ)
- 对于高功率LED需增加MOSFET驱动(如IRLZ44N)
- 添加TVS二极管防止反向电压冲击
舵机控制场景:
- 确保电源能提供足够瞬时电流(至少每个舵机500mA)
- 信号线串联100Ω电阻抑制振铃现象
- 并联0.1μF电容滤除高频干扰
3. 软件实现与寄存器配置
3.1 定时器初始化流程
完整的PWM输出初始化包含以下几个关键步骤:
- 使能相关时钟(
