PWM 频率 = TimerClock / ((PSC+1)×(ARR+1)),占空比 = CCR/(ARR+1);普通定时器 TIM2~5 做 PWM,高级定时器 TIM1/TIM8 有互补输出和死区,用于电机驱动;配置步骤:时基→输出比较→GPIO 复用。
本文概述
PWM 是单片机最常用功能,面试常考:频率占空比计算、高级定时器互补输出、死区。回答要现场算频率。
核心要点
PWM 频率 = TimerClock / ((PSC+1)×(ARR+1))
占空比 = CCR / (ARR+1) × 100%
普通定时器 TIM2~5 支持 PWM 输出
高级定时器 TIM1/TIM8 有互补输出 CHx/CHxN 和死区,用于 H 桥电机
配置:时基(PSC/ARR)→输出比较模式(PWM1/PWM2)→CCR→GPIO 复用

面试官考察点
PWM 基础题。面试官看你是否会算。重点听:公式、PSC 和 ARR 选择。
回答思路
用公式算,给一组合理值。
参考回答
公式。
PWM频率 = TimerClock / ((PSC+1) × (ARR+1))
72MHz 要 1kHz:
(PSC+1) × (ARR+1) = 72MHz / 1kHz = 72000
选 PSC=71(分频 72),则 TimerClock=1MHz:
ARR+1 = 1MHz / 1kHz = 1000
ARR = 999
占空比 50% 时 CCR = 500。
| 参数 | 值 | 说明 |
|---|---|---|
| TimerClock | 72MHz | APB1 定时器时钟(倍频后) |
| PSC | 71 | 分频 72,计数频率 1MHz |
| ARR | 999 | 周期 1000 计数 = 1ms |
| CCR | 0~999 | 占空比 = CCR/1000 |
| 频率 | 1kHz | 周期 1ms |
配置步骤(HAL 库)。
使能定时器时钟和 GPIO 时钟;
GPIO 配置为复用推挽输出(AF);
配置时基:PSC、ARR、计数模式(向上/向下);
配置输出比较:模式 PWM1(CNT
启动 PWM:HAL_TIM_PWM_Start(&htim, TIM_CHANNEL_1);
改占空比:__HAL_TIM_SET_COMPARE(&htim, TIM_CHANNEL_1, ccr)。
高级定时器互补输出。
TIM1/TIM8 有 CH1 和 CH1N(互补),同时输出反相 PWM;
死区时间 DeadTime:防止上下管同时导通,一般几百 ns~1μs;
用于 H 桥、三相逆变器、BLDC 电机驱动;
配置:TIM_BDTR 寄存器设死区,MOE 位使能输出。
注意。
ARR 越大占空比分辨率越高,但频率越低;
电机驱动 PWM 频率一般 10~20kHz(超音频);
LED 调光 1kHz 够了,太高效率低;
高级定时器刹车功能(BKIN)用于过流保护。

扫码关注






























