STM32中ARR(自动重装寄存器)为什么要减1

在STM32定时器的配置中,ARR(自动重装载寄存器)需要减1的原因主要与定时器的计数方式和寄存器的设置方式有关。以下是对此问题的详细解释:

一、定时器的计数方式

STM32的定时器通常采用递增计数方式,即计数器(CNT)从0开始逐渐递增,直到达到某个预设的值(即ARR的值)时停止计数,并产生一个更新事件或中断。这个预设的值就是ARR寄存器中保存的数。

二、寄存器的设置方式

  1. 计数范围:STM32定时器的计数器(CNT)和自动重装载寄存器(ARR)通常都是16位的,这意味着它们的最大计数值为65535(即2^16-1)。
  2. 寄存器值与实际计数:在STM32的定时器中,寄存器的值与实际计数的值之间存在一种对应关系。具体来说,当我们将某个值写入ARR寄存器时,定时器的计数器并不会立即达到这个值,而是从0开始逐渐递增,直到达到写入ARR寄存器的值减1时,才会产生更新事件或中断。

三、为何需要减1

  1. 计数从0开始:STM32定时器的计数器是从0开始计数的,而不是从1开始。因此,当我们希望定时器在计数到某个特定值时产生中断时,需要将这个特定值减1后写入ARR寄存器。
  2. 寄存器与实际计数的对应关系:由于寄存器值与实际计数值之间存在对应关系(即寄存器值=实际计数值+1),因此我们需要将期望的计数值减1后写入ARR寄存器,以确保在计数器达到期望值时产生中断。

四、示例说明

假设我们希望STM32定时器在计数到10000次时产生中断。那么,我们需要将9999(即10000-1)写入ARR寄存器。这样,当计数器的值从0递增到9999时,定时器就会产生一个更新事件或中断。

ARR需要减1的原因主要与定时器的计数方式和寄存器的设置方式有关。为了确保在计数器达到期望值时产生中断,我们需要将期望的计数值减1后写入ARR寄存器。

相关推荐
俊基科技7 小时前
A-59U工业级多模语音处理模块在矿山矿井通信与呼叫报警系统中的应用
嵌入式硬件·嵌入式开发·硬件开发·ai降噪·回音消除·拾音降噪
周周记笔记9 小时前
GD32F450xx MCU Datasheet 解读:硬件测试工程师的测试方法论
单片机·嵌入式硬件
潘潘的嵌入式日记11 小时前
I²C 从机接收总被覆盖?双缓冲要在 STOP 时交接
c语言·开发语言·单片机
AOI小白新手上路12 小时前
江科协51单片机16-1 AD/DA ADC 三通道综合显示(LCD1602 版)改造说明
单片机·嵌入式硬件·51单片机
HUI-47413 小时前
EG1135|SSOP‑16 同步整流降压控制器,大功率外置 MOS 降压优选
单片机·嵌入式硬件·硬件工程
单片机仿真设计13 小时前
【proteus仿真】基于 STM32 单片机恒温箱控制系统设计(仿真图+程序)
stm32·单片机·嵌入式硬件·proteus·毕设
国科安芯14 小时前
星载CAN总线通信网络中抗辐射MCU的通信可靠性设计分析
网络·人工智能·分布式·单片机·嵌入式硬件·架构
新晨单片机设计15 小时前
S003A-基于STM32单片机温度计(数码管显示)【Proteus仿真+Keil程序+原理图】
stm32·单片机·stm32单片机功能定制
一条破秋裤15 小时前
TIM 输入捕获与 PWMI:从边沿到频率、占空比
笔记·stm32·学习
AOI小白新手上路15 小时前
江科协51单片机16-1 DA数模转换实验(PWM 呼吸灯)
单片机·嵌入式硬件·51单片机