很多嵌入式岗位都会问定时器、计数比较和硬件PWM,这里重点是把计算关系讲对,并指出不同计数模式的差异。
面试官这样问
不用delay软件翻转GPIO,而用MCU硬件定时器产生20kHz PWM并调节占空比。你会改哪个寄存器?占空比从30%改到70%会影响频率吗?
参考回答|先讲结论
在常见的边沿对齐、向上计数PWM模式中,计数时钟经过预分频器PSC,再由自动重装寄存器ARR确定周期;比较寄存器CCR决定高低电平翻转位置。只修改CCR通常改变占空比而不改变周期;修改PSC或ARR则会改变频率,特殊模式还要看PWM极性与对齐方式。
核心原理,面试官真正要听的
以常见通用定时器的向上计数为例:PWM频率约为 fTIM / [(PSC+1)×(ARR+1)],占空比可按CCR与周期计数之比理解。中心对齐模式的计数路径包含上下双向过程,不能直接照搬同一频率公式。还应检查实际定时器输入时钟,它可能受到总线预分频和芯片时钟树规则影响。

工程现场怎样检查与回答
STEP 01
从芯片时钟树确认定时器实际输入频率,再根据目标频率选择PSC与ARR,让ARR保留足够分辨率。
STEP 02
配置GPIO复用功能、通道PWM模式、极性和输出使能;必要时开启ARR/CCR预装载,避免更新瞬间出现毛刺。
STEP 03
通过CCR改变占空比,边界值0%和100%时要检查硬件的输出比较行为与计数边界。
STEP 04
用示波器测实际频率、占空比和抖动;如果控制电机,还要考虑驱动器的死区、开关损耗和可闻噪声。
容易踩的坑
不能把“CCR决定频率”或“PSC决定占空比”说反。也不能无条件把一个厂商的寄存器命名和公式套用到所有MCU定时器。
追问练习
同样20kHz PWM,为什么ARR越大通常占空比分辨率越高?因为一个周期内可用的比较计数级数增加,但前提是时钟频率与预分频配置允许。

扫码关注





























