stm32f4 寄存器 adc
时间: 2025-05-13 12:51:02 浏览: 16
### STM32F4 ADC 寄存器配置及使用方法
#### 1. ADC 的基本功能概述
STM32F4 微控制器中的模数转换器(Analog-to-Digital Converter, ADC)用于将模拟信号转化为数字信号。其核心由多个寄存器组成,这些寄存器负责控制和监控 ADC 的操作模式。
---
#### 2. 主要寄存器及其作用
##### (1)ADC_CSR - 通用状态寄存器
该寄存器提供了关于当前 ADC 转换的状态信息。它包含了多种标志位,例如 EOC(End of Conversion)、EOC_J(注入通道转换结束),以及 OVR(Overrun Flag)。通过读取这些标志位,可以判断 ADC 是否完成了一次转换或者是否存在溢出错误[^1]。
##### (2)ADC_CCR - 通用控制寄存器
此寄存器主要用于全局性的 ADC 配置选项。其中包括:
- **Dual Mode Configuration**: 设置双 ADC 或多路 ADC 工作模式。
- **DMA Enable**: 启用或禁用 DMA 功能以实现高效的数据传输。
- **Resolution Selection**: 设定分辨率(通常支持 8 至 16 位之间的不同精度级别)。
##### (3)ADC_CDR - 通用规则数据寄存器
当启用多重规则组扫描时,CDR 将存储最近一次常规通道的转换结果。对于连续采样场景非常有用。
##### (4)ADC_JSQR - 注入序列寄存器
JSQR 定义了哪些外部事件触发下的特定顺序执行注入型输入信道测量过程。具体来说,它可以指定最多四个不同的注入通道号及其优先级排列方式[^2]。
---
#### 3. 使用 DMA 进行高效数据处理
为了提高性能并减少 CPU 占用率,在实际应用中经常采用直接内存访问(DMA)技术来自动搬运采集到的结果至 RAM 缓冲区之中。根据官方文档描述可知,针对 F4 系列芯片而言:
- `DMA2 Stream0` 和 `Stream4` 对应于 `ADC1`;
- `DMA2 Stream2` 及 `Stream3` 则服务于 `ADC2`;
- 最后还有两条流分别连接到了第三个外设实例上(`ADC3`)即 `Stream0` 和 `Stream1`.
这种映射关系简化了开发者设计复杂同步逻辑的工作量[^3].
---
#### 4. 示例代码解析
下面给出一段基于上述理论基础构建起来的实际工程片段演示如何利用软件接口函数获取来自三个独立传感器端口上的电压数值:
```c
// 声明全局变量保存每次测得的AD值
uint16_t AD0, AD1, AD2;
int main(void){
/* 初始化硬件资源 */
AD_Init();
while (true){
// 分别调用各个通道对应的读取服务例程
AD0 = AD_GetValue(ADC_Channel_0);
AD1 = AD_GetValue(ADC_Channel_1);
AD2 = AD_GetValue(ADC_Channel_2);
// 插入适当延迟以便让电路稳定下来再重新开始新一轮循环检测动作
Delay_ms(100);
}
}
```
在此范例里我们看到每一个周期都会依次查询零号、一号直至二号线路上所连设备产生的即时电平高度,并且每隔一百毫秒重复一遍整个流程从而形成动态监测效果[^4].
---
阅读全文
相关推荐


















