ARR(Auto-Reload Register,自动重装载寄存器)是定时器的核心控制单元之一,与PSC(预分频器)共同构建定时器的完整计时逻辑。以下是其核心作用及与PSC的协同关系解析:
一、ARR的核心作用
功能维度 | 具体作用 | 应用场景示例 |
---|---|---|
周期控制 | 定义计数器从0递增到ARR值的完整周期,即定时周期 = (ARR + 1) × 分频后时钟周期 | 1ms定时中断(ARR=999,PSC=71 @72MHz) |
PWM波形基准 | 作为占空比的分母:占空比 = CCRx / (ARR + 1) | 50%占空比时CCRx = (ARR+1)/2 |
中断触发源 | 计数器达到ARR时触发更新事件(UEV),可生成中断或DMA请求 | 周期性ADC采样触发 |
计数边界限制 | 限制计数器最大值,防止溢出失控(例如在编码器模式下限定机械行程范围) | 电机旋转角度限制(ARR=360对应1圈) |
二、ARR与PSC的协同关系
1. 频率生成公式
输出频率 = 定时器输入时钟 / (PSC + 1) / (ARR + 1)
- PSC:粗调频率范围(降低时钟频率)
- ARR :细调周期精度(定义计数步长)
示例 :
若需生成1kHz方波(72MHz主频):
PSC = 71
→ 分频后时钟1MHz
ARR = 999
→ 周期1ms(1000Hz)
2. 精度与频率的权衡
需求 | 调整策略 | 典型场景 |
---|---|---|
高频率输出 | 减小ARR,增大PSC(牺牲占空比精度) | 超声波驱动信号(40kHz) |
高占空比精度 | 增大ARR,减小PSC(牺牲频率上限) | 伺服电机控制(0.1°分辨率需ARR≥3600) |
三、ARR的硬件特性与配置技巧
- 动态重装载
- 预装载使能 (
TIMx->CR1.ARPE=1
):ARR修改在下一个周期生效,避免计数中途跳变 - 立即更新 (
TIMx->EGR.UG=1
):强制立即应用新ARR值(可能引发波形抖动)
- 预装载使能 (
- 特殊模式行为
- 中心对称模式 (中央对齐):实际有效周期为
2×ARR
(计数器上下计数) - 单脉冲模式:ARR定义单次计数终点,触发后自动停止计数器
- 中心对称模式 (中央对齐):实际有效周期为
- 物理位宽限制
- 16位定时器:ARR范围0-65535
- 32位扩展模式(级联):ARR可扩展至0-4,294,967,295
四、常见误区与避坑指南
- 占空比失效 :若
CCRx > ARR
,PWM输出可能恒高/恒低(取决于极性配置) - 周期跳变风险:运行中修改ARR时未启用预装载,可能导致计数器值(CNT)与ARR错位
- 中断遗漏:ARR值过小可能导致中断频率超过CPU处理能力(需结合NVIC优先级优化)
总结
ARR是定时器的周期标尺,与PSC共同构建频率和占空比的控制体系。其核心价值在于:
- 定义时间基准:为中断、PWM、捕获等提供周期性触发源
- 硬件级同步:通过预装载机制实现无抖动的动态参数调整
- 资源效率优化:通过ARR/PSC组合平衡频率与精度需求
实际开发中,建议通过公式反推ARR = (目标周期 × 分频后时钟频率) - 1,并结合预装载功能保障稳定性。