定时器ARR的作用

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的硬件特性与配置技巧

  1. 动态重装载
    • 预装载使能TIMx->CR1.ARPE=1):ARR修改在下一个周期生效,避免计数中途跳变
    • 立即更新TIMx->EGR.UG=1):强制立即应用新ARR值(可能引发波形抖动)
  2. 特殊模式行为
    • 中心对称模式 (中央对齐):实际有效周期为2×ARR(计数器上下计数)
    • 单脉冲模式:ARR定义单次计数终点,触发后自动停止计数器
  3. 物理位宽限制
    • 16位定时器:ARR范围0-65535
    • 32位扩展模式(级联):ARR可扩展至0-4,294,967,295

四、常见误区与避坑指南

  1. 占空比失效 :若CCRx > ARR,PWM输出可能恒高/恒低(取决于极性配置)
  2. 周期跳变风险:运行中修改ARR时未启用预装载,可能导致计数器值(CNT)与ARR错位
  3. 中断遗漏:ARR值过小可能导致中断频率超过CPU处理能力(需结合NVIC优先级优化)

总结

ARR是定时器的周期标尺,与PSC共同构建频率和占空比的控制体系。其核心价值在于:

  1. 定义时间基准:为中断、PWM、捕获等提供周期性触发源
  2. 硬件级同步:通过预装载机制实现无抖动的动态参数调整
  3. 资源效率优化:通过ARR/PSC组合平衡频率与精度需求

实际开发中,建议通过公式反推ARR = (目标周期 × 分频后时钟频率) - 1,并结合预装载功能保障稳定性。

相关推荐
蓝凌y2 小时前
51单片机之外部中断
c语言·单片机·嵌入式硬件
冲,干,闯3 小时前
矩阵按钮部件
单片机
12.=0.4 小时前
【stm32_2.2】【快速入门】对GPIO解析、外设的初始化和配置、细节分析GPIO
stm32·单片机·嵌入式硬件
我是标同学4 小时前
单片机IO增强电流驱动能力的三极管几种接法
单片机·嵌入式硬件
心语星愿114 小时前
STM32单片机高级篇-物联网通信之CAN通讯(学习笔记)
stm32·单片机·物联网
VALENIAN瓦伦尼安教学设备6 小时前
设备对中不良的危害
数据库·嵌入式硬件·算法
爱喝纯牛奶的柠檬7 小时前
【已验证】STM32+MPU6050 姿态解算 + 运动状态识别 + 四阶段摔倒检测
stm32·单片机·嵌入式硬件
戏舟的嵌入式开源笔记7 小时前
STM32 RS485读取SHT20
stm32·单片机·嵌入式硬件
LCG元8 小时前
噪声检测系统:STM32F4驱动MEMS麦克风,FFT频谱分析实战
stm32·单片机·嵌入式硬件
charlie1145141918 小时前
嵌入式C++教程实战之Linux下的单片机编程:从零搭建 STM32 开发工具链(2) —— HAL 库获取、启动文件坑位与目录搭建
linux·开发语言·c++·stm32·单片机·学习·嵌入式