STM32面试:定时器PWM频率和占空比怎么算?PSC、ARR、CCR分别起什么作用?
面试官经常让候选人现场算一个PWM参数。回答时不能只背公式,还要说清楚定时器实际时钟从哪里来、计数器从0数到ARR为什么是ARR+1个计数周期。
STM32面试:定时器PWM频率和占空比怎么算?PSC、ARR、CCR分别起什么作用?
面试回答
对于边沿对齐、向上计数的常见PWM配置,计数频率为fCNT=fTIM/(PSC+1),PWM频率为fPWM=fTIM/[(PSC+1)×(ARR+1)];PWM模式1下,占空比通常约为CCR/(ARR+1)×100%。其中PSC负责分频,ARR决定计数周期,CCR决定有效电平持续的计数长度。
01先确认定时器时钟
fTIM指的是定时器内核时钟,不一定等于CPU主频,也不一定直接等于APB外设总线时钟。
不少STM32系列在APB预分频不为1时,定时器时钟与PCLK存在倍频关系;具体规则还要看芯片系列、时钟树和参考手册,不能所有型号一概而论。
02再计算PSC、ARR和CCR
先确定目标PWM频率和允许的计数分辨率,再选择PSC。PSC越大,计数频率越低;在相同频率下,计数周期可用的ARR范围也会随之变化。
边沿对齐向上计数时,计数器从0到ARR,实际计数次数为ARR+1。确定PSC后,用ARR设定周期,再用CCR设定占空比。
例如计数时钟为1MHz、ARR=999,则PWM周期为1000个计数时钟,对应1kHz;若CCR=250,PWM模式1的理论占空比约为25%。
03调试时容易忽略的细节
中心对齐模式的计数轨迹不同,频率公式不能直接照搬边沿对齐模式;要按具体计数模式计算。
动态修改ARR和CCR时,建议结合预装载功能和更新事件,避免周期中途改变比较值造成异常脉冲。
最终用示波器或逻辑分析仪测量频率、占空比和电平幅度,核对实际时钟配置与计算结果。
把系统主频直接当作定时器时钟;忘记PSC和ARR寄存器通常都要加1;或者把中心对齐和边沿对齐的公式混用。
同样设置PSC、ARR和CCR,换到另一款STM32后PWM频率不一样,你会先检查什么?
相关业务入口
了解电子硬件设计与PCB工程实战课程

扫码关注































