单片机 PWM 频率与占空比计算器
输入单片机系统主频 fCLK、定时器预分频系数 PSC (Prescaler)、自动重装载寄存器 ARR (Period) 与比较值 CCR (Compare),在线计算出产生的 PWM 频率 fPWM、周期时间 T、占空比百分比以及 PWM 分辨率位数。适用于 STM32、ESP32、Arduino 及 51 单片机外设配置。
注意:部分单片机 APB 预分频不为 1 时,定时器时钟倍频 2 倍
STM32 HAL 库中填真实写入寄存器的值 (分频系数为 PSC + 1)
STM32 中实际周期计数为 (ARR + 1)
决定高电平持续时间
计算结果
| PWM 产生频率 fPWM | — |
| PWM 信号周期 T | — |
| 高电平占空比 Duty | — % |
| 高电平脉宽时间 Thigh | — |
| 占空比分辨率 (调光/调速级数) | — 级 (— Bits) |
STM32 标准公式 (边沿对齐)
fPWM = fCLK / [ (PSC + 1) × (ARR + 1) ]
Duty (%) = [ (CCR) / (ARR + 1) ] × 100%
分辨率级数 = ARR + 1,位数 Bits = log₂(ARR + 1)
典型嵌入式应用场景 PWM 参数配置推荐表 (以 72MHz STM32F1 为例)
| 应用场景 | 目标 PWM 频率 | 推荐 PSC 值 | 推荐 ARR 值 | 说明 |
|---|---|---|---|---|
| 舵机控制 (SG90 / MG996R) | 50 Hz (周期 20ms) | PSC = 71 (1MHz计数) | ARR = 19999 | CCR 在 500~2500 之间控制 0°~180° 角度 |
| 直流电机 PWM 调速 | 10 kHz ~ 20 kHz | PSC = 0 或 3 | ARR = 3599 (20kHz) | 高于 16kHz 可消除电机人耳听觉噪音啸叫 |
| 蜂鸣器无源鸣叫 | 2.7 kHz (响度最高) | PSC = 71 | ARR = 369 | 50% 占空比声音最响亮 |
| LED 呼吸灯 / 蜂窝调光 | 1 kHz ~ 5 kHz | PSC = 71 | ARR = 999 (1kHz) | ARR=999 时占空比精度直接对应 0.1% / 1000级 |
- 频率与分辨率的权衡: PWM 频率越高(ARR 值越小),占空比可调节的细致程度(分辨率级数)就越低;提高分辨率需增加 ARR,但这会降低 PWM 频率。
- 死区时间 (Dead-time):在 H 桥或半桥驱动电路中,上管与下管开关 PWM 必须配置死区时间,防止上下管直通短路炸管。
dgbzxny | 博众新材
免费获取样品与设计选型支持
提供贴片铜条、贴片螺母、焊接端子、PCB插片等多样化样品,支持定制开发与技术方案匹配。