凡亿教育-婷婷
凡事用心,一起进步
打开APP
公司名片
凡亿课堂 | 面试指南
当前位置: 首页 面试指南
STM32定时器PWM怎么配置与应用?嵌入式工程师面试
浏览量:352
2026-09-14 19:49:04
一句话答案

STM32 PWM 靠定时器的 ARR(决定频率)和 CCR(决定占空比)配合输出,配置时先选定时器时钟、算 ARR 决定频率、再用 CCR 调占空比;高级定时器还带刹车、死区,做电机和电源必问。

本文概述

PWM 是单片机最高频考点之一,LED 呼吸灯、电机调速、开关电源都用它。面试常考:PWM 频率怎么算、ARR/CCR 关系、通道互补输出、死区时间、刹车功能。回答要能现场算一组频率和占空比,并说清应用场景。

核心要点

  • PWM 频率 = 定时器时钟 / ((ARR+1)*(PSC+1)),ARR 决定周期、CCR 决定占空比

  • 占空比 = CCR/(ARR+1),改变 CCR 即可调占空比,不需重新初始化

  • 高级定时器(TIM1/TIM8)支持互补输出、死区时间、刹车输入,用于半桥/全桥电机

  • 输出比较模式选 PWM1/PWM2,CHx 与 CHxN 互补,需配置 GPIO 复用推挽

  • 做开关电源或电机时频率要在器件最佳区间(如 MOSFET 开关损耗和电感可接受范围)

示波器显示 STM32 输出的 PWM 方波,开发板连接调试器,屏幕上显示 PWM 配置代码

面试官:用 STM32F103 的 TIM2,时钟 72MHz,我要输出 1kHz、占空比 30% 的 PWM,ARR 和 CCR 怎么配?

面试官考察点

这是必考题,现场算。面试官看:①公式是否记牢;②PSC 和 ARR 怎么分;③是否知道 0 起始;④是否注意溢出和分辨率。算不出来基本挂。

回答思路

先写公式,再代数字,给一组合理的 PSC/ARR/CCR,并解释为什么这样选(比如 72 分频让 ARR=999,分辨率 10bit)。

参考回答

先写公式。PWM 频率由定时器计数周期决定:

PWM 频率 = TIM_CLK / ((PSC+1) × (ARR+1))
占空比 = CCR / (ARR+1)

代入计算。TIM2 在 STM32F103 上挂 APB1,时钟 72MHz。要 1kHz:

  • 选 PSC=71(分频 72),计数时钟 = 72MHz/72 = 1MHz;

  • ARR+1 = 1MHz/1kHz = 1000,所以 ARR=999;

  • 占空比 30%:CCR = 1000×0.3 = 300。

参数值说明
TIM_CLK72MHzTIM2 挂 APB1
PSC7172 分频,计数时钟 1MHz
ARR999周期 1000 计数,频率 1kHz
CCR300占空比 30%

为什么这样选。PSC=71 把时钟降到 1MHz,ARR=999 给了 1000 级分辨率(约 10bit),调占空比够细。如果要更高分辨率,可以减小 PSC、增大 ARR;但 ARR 是 16 位,最大 65535,算不下来就要换思路。

实际应用要点。

  • 普通 PWM(LED 调光、蜂鸣器):用通用定时器(TIM2~5),单路输出即可;

  • 电机/电源:用高级定时器 TIM1/TIM8,开 CHx/CHxN 互补输出,配死区时间防止上下桥臂直通,接刹车输入(BKIN)故障时立即关断;

  • 占空比在线调整只改 CCR,HAL 库用 __HAL_TIM_SET_COMPARE(),不用重初始化;

  • GPIO 配成复用推挽(AF_PP),否则输出不了标准电平。

面试官可能追问

追问 1:PSC 和 ARR 怎么分配更合理?
尽量让 ARR 大以提高占空比分辨率,PSC 只做粗分频。例如要 1kHz,优先 PSC 小、ARR 大;但 ARR 受 16 位限制,超了就要减小 PSC 或换 32 位定时器(TIM2/TIM5)。
追问 2:死区时间是什么?为什么电机需要?
半桥电路上下两个 MOS 不能同时导通(直通短路)。死区是互补两路信号切换时插入的一段都关断的时间,等 MOS 完全关断再开另一个,通常几百 ns 到几 μs,按器件开关时间选。
追问 3:PWM 频率选多少合适?
LED 调光 1~20kHz(避开人眼闪烁和音频噪声);电机 10~20kHz;开关电源几百 k 到 MHz。频率太高开关损耗大,太低电感电流脉动大。
追问 4:怎么实现 PWM 突发输出(指定个数脉冲)?
用定时器的 PWM 输入模式或联动 TRGO,配合另一定时器触发;高级定时器有重复计数器 RCR,可以精确控制输出脉冲数后自动停止。
追问 5:CCR 和 ARR 一样大会怎样?
PWM1 模式下占空比 100%(一直高);CCR=0 时占空比 0%(一直低)。注意 ARR=0 时不计数,要设成需要周期减 1。

常见失分表达

✗ PWM 就是调占空比,频率随便 — 频率和 ARR/PSC 的关系讲不清,现场算不出来。
✗ 电机就用普通定时器输出就行 — 不知道高级定时器的互补、死区、刹车功能,做过电机会出事。
✗ 改占空比要重新初始化定时器 — 不了解 CCR 可在线修改,程序写得笨。

准备动作

1
现场练 3 道算题:72MHz 下输出 1kHz/10kHz/50Hz,分别配 PSC/ARR/CCR
2
画一张半桥驱动示意图,标出 CHx/CHxN 互补信号和死区位置
3
在 CubeMX 里配一次 TIM1 PWM 互补输出 + 死区 + BKIN,看生成的代码
4
准备一个项目例子:你用 PWM 做过 LED 调光、电机调速或电源控制

核心关键词

PWMARRCCR占空比死区时间高级定时器


声明:本网站所收集的部分公开资料来源于互联网,转载的目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。仅供学习交流使用,不构成商业目的。版权归原作者所有,如果您发现网站上有侵犯您的知识产权的作品,请与我们取得联系,我们会及时删除。 侵权投诉

相关文章

浪涌测试后设备复位或损坏怎样排查?EMC面试要先画清能量路径

2026-07-30 21:39:22

请讲一个你亲自定位并解决的技术问题:面试官想听到什么?

2026-10-29 23:06:53

射频工程师面试:定向耦合器四个端口怎么理解?耦合度、方向性和隔离度这样答

2026-10-16 20:11:22

行为面试题:你和硬件、PCB或软件同事对方案有分歧时,怎么回答才像真正做过项目?

2026-10-20 16:54:13

HDI盲埋孔与微孔设计有哪些要点?PCB工程师面试从微孔类型讲到叠层与DFM

2026-08-29 12:17:44