在STM32的中,规则组(Regular Group) 和注入组(Injected Group) 是两种核心的工作模式。

它们最根本的区别可以这样理解:规则组是“常规任务”,而注入组是能随时“插队”的“紧急任务”

下面这个表格能帮你更清晰地看到它们的区别:

特性 规则组 (Regular Group) 注入组 (Injected Group)
核心定位 常规、周期性的数据采集 高优先级、事件驱动的紧急采样
优先级 ,可被注入组打断 ,可以打断正在进行的规则组转换
通道数量 最多 16 最多 4
数据寄存器 共用 一个数据寄存器 ADC_DR,多通道时新数据会覆盖旧数据 独立 的数据寄存器 ADC_JDRx,每个通道有自己专用的寄存器,数据不会互相覆盖
DMA支持 通常需要配合DMA,以防多通道数据丢失 一般不用DMA,因其通道少且有独立寄存器
工作模式 支持单次、连续、扫描等多种模式 主要支持单次转换,不支持连续循环模式
典型应用 持续监测温度、电池电压等 响应外部触发信号、捕获突发数据等

🎯 核心差异详解

  • 优先级与“插队”机制:这是两者最本质的区别。注入组拥有更高的优先级。当注入组被触发时,它会立即中断正在进行的规则组转换,优先完成自己的任务。任务完成后,被中断的规则组转换才会恢复。这就像一个“紧急中断”。

  • 数据管理与存储

    • 规则组:所有通道共用一个结果寄存器ADC_DR。这意味着在多通道连续采样时,必须依靠DMA(直接内存访问) 及时将数据搬走,否则新数据会覆盖旧数据,造成丢失。

    • 注入组:每个通道都有自己专用的寄存器(ADC_JDR1~ADC_JDR4)。因此,即使没有DMA,各个通道的数据也能被安全、独立地保存,不会相互影响。

💡 一个生动的应用场景

假设你需要监控一个工业设备的运行状态:

  • 规则组:负责持续监控设备的温度、电压等常规参数,这些数据需要被周期性地记录。

  • 注入组:负责响应紧急事件,比如当某个传感器检测到异常振动时,立即触发注入组进行高精度的快速采样,以便分析故障原因。

在这个场景中,注入组的紧急测量可以“插入”到规则组的常规监控流程中,优先处理,处理完后规则组的监控自动恢复。

⚙️ 配置寄存器速查

在STM32的固件库或HAL库配置中,你通常会操作这些寄存器:

  • 规则组:转换序列和顺序由 ADC_SQR1ADC_SQR2ADC_SQR3 寄存器控制。

  • 注入组:转换序列和顺序由 ADC_JSQR 寄存器控制。

💎 总结

总的来说,选择哪种模式取决于你的应用需求:

  • 如果你的任务是常规、周期性的数据采集,使用规则组并配合DMA是最佳选择。

  • 如果你的应用需要快速响应外部事件,并有高优先级的采样需求,那么注入组是必不可少的工具。

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐