深入STM32F103寄存器级移相全桥PWM实战:从原理到波形调试
在嵌入式电源控制领域,移相全桥拓扑因其高效率、低EMI特性成为中高功率DCDC转换器的首选方案。而STM32F103凭借其丰富的高级定时器资源,成为实现数字控制的主流选择。本文将彻底抛开HAL/LL库的抽象层,带您直击寄存器操作本质,构建一套完整的移相全桥PWM生成系统。
1. 移相全桥的硬件原理与定时器架构
移相全桥的核心在于两组桥臂的相位差控制。在STM32F103中,TIM1和TIM8这两个高级定时器恰好提供了我们所需的互补输出和主从联动功能。与库函数方案不同,寄存器级操作让我们能够精确控制每一个时钟周期。
关键硬件配置要点:
- PA9/PB14作为TIM1的互补输出通道(CH1/CH1N)
- PB0/PC7作为TIM8的互补输出通道(CH2/CH2N)
- 使用TIM1的OC1REF信号作为TIM8的复位触发源
定时器联动关系如下图所示:
| 主定时器(TIM1) | 从定时器(TIM8) |
|---|---|
| 产生基准PWM波形 | 接收触发信号复位计数 |
| OC1REF作为TRGO输出 | 配置为复位从模式 |
| 控制移相角度 | 保持固定占空比 |
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 寄存器初始化深度解析
2.1 TIM1主定时器配置
直接操作寄存器时,每个bit的设置都直接影响硬件行为。以下是TIM1初始化的关键步骤:
c复制// 时钟使能配置
RCC->APB2ENR |= 1<<11; // TIM1时钟使能
RCC->APB2ENR |= 1<<2 | 1<<3; // GPIOA和GPIOB时钟
// GPIO配置为复用推挽输出
GPIOA->CRH = (GPIOA->CRH & 0xFFFFFF0F) | 0x000000B0; // PA9
GPIOB->CRH = (GPIOB->CRH & 0xF0FFFFFF) | 0x0B000000; // PB14
// 定时器核心参数
TIM1->ARR = arr; // 设置自动重装载值
TIM1->PSC = 0; // 无预分频
// PWM模式配置
TIM1->CCMR1 |= 6<<12 | 1<<11; /
