单片机定时器计算器
计算 STM32 与 51 单片机的定时器预分频、重装值和实际定时误差,并生成初始化代码;另含 STM32 PWM 频率与占空比计算。
免费在线工具
Loading…
使用说明
工具分“定时器计算”和“PWM 计算”两个页签,输入变化后会自动重新计算。
- 在“定时器计算”页签选择平台:STM32 或 51 单片机。
- STM32:选择定时器时钟(72/84/168/180 MHz 或自定义),输入目标定时时间并选择 μs、ms 或 s。工具会遍历 PSC(0~65535)寻找误差最小的 16 位 ARR 组合,输出 PSC、ARR、实际定时和误差。
- 51 单片机:选择晶振(11.0592 MHz、12 MHz 或自定义),输入目标定时时间(ms),选择题 1(16 位定时)或模式 2(8 位自动重装),输出 TH0、TL0、实际定时和误差。
- 切到“PWM 计算”页签,选择定时器时钟,输入 PWM 频率(Hz)和占空比(0 到 100(百分比)),得到 PSC、ARR、CCR、实际频率与误差。
- 结果区的“复制代码”可复制生成的初始化代码;下方参考表按当前时钟和参数列出常用定时周期或 PWM 频率的组合。
- “加载示例数据”会恢复当前页签的默认参数并重新计算。
功能介绍
- STM32 定时器:按 (ARR+1)×(PSC+1)/TIM_CLK 反算,遍历 PSC 以最小误差逼近目标时间,PSC 与 ARR 均限制在 16 位范围 0~65535。
- 51 单片机定时器:机器周期 = 12/晶振频率;模式 1 为 16 位定时,模式 2 为 8 位自动重装,输出 TH0/TL0 的十进制与十六进制值。
- STM32 PWM:按 TIM_CLK/((PSC+1)×(ARR+1)) 寻找最接近目标频率的组合,并按 CCR = ARR×占空比 计算比较值。
- 代码生成:为 STM32 定时器、STM32 PWM 和 51 两种模式分别生成标准外设库风格或 8051 C 初始化代码,可一键复制。
- 参考表:STM32 定时列出 1~1000 ms 常用周期,51 按模式列出常用时间,PWM 列出 100 Hz~50 kHz 常用频率,均使用当前时钟计算。
- 误差提示:目标时间或频率超出可生成范围时给出错误,并说明当前晶振/模式下的大致上限。
使用场景
STM32 定时中断参数配置
需要 1 ms 或 10 ms 的周期中断时,直接得到 PSC、ARR 组合和标准库初始化代码,减少手工试算。
51 单片机波特率/定时配套
在 11.0592 MHz 晶振下计算定时器初值,用于串口波特率发生器或周期性任务中断。
PWM 调光与电机控制
输入目标 PWM 频率和占空比,得到 PSC、ARR、CCR,用于 LED 调光、舵机或直流电机驱动的初步配置。
比较不同时钟方案的误差
切换 72/84/168/180 MHz 或自定义时钟,比较同一目标时间的实际定时与误差,选择更合适的定时器时钟。
常见问题
STM32 的 PSC 和 ARR 取值范围是多少?
两者都是 16 位,取值为 0~65535。目标时间过短会得到 arrFloat 小于 0,过长会超过 65535,此时工具提示无法找到合适组合,需要调整目标时间或时钟频率。
51 单片机模式 1 和模式 2 有什么区别?
模式 1 是 16 位定时器,最大约 65536 个机器周期,需要在中断中重新装载 TH0/TL0;模式 2 是 8 位自动重装,最大 256 个机器周期,适合更短的高频中断,但定时上限明显更小。
为什么实际定时与目标值不完全一致?
PSC、ARR、TH0、TL0 都只能取整数,分频和计数存在量化误差。工具会输出误差百分比,通常应选择误差较小的组合;时钟精度、中断响应延迟和晶振偏差还会带来额外误差。
生成的代码能直接编译使用吗?
代码是常见标准外设库(StdPeriph)或 8051 C 风格,只配置定时器时基或 PWM 通道,不包含 GPIO、时钟总线和中断优先级配置。不同芯片的定时器编号、APB 总线和引脚需要按实际型号调整。
PWM 的占空比如何换算成 CCR?
工具按 CCR = round(ARR × 占空比 / 100) 计算,占空比允许 0 到 100(百分比)。实际频率由 TIM_CLK/((PSC+1)×(ARR+1)) 决定,结果区会同时显示实际频率和相对误差。
可以输入自定义时钟或晶振吗?
可以。STM32 时钟和 51 晶振的下拉框中都有“自定义”选项,选中后会出现输入框,分别以 Hz 和 MHz 为单位填写。输入的时钟必须为有效正数。