STM32F373CCT6 SADC规则组
时间: 2025-05-20 22:44:42 浏览: 16
### STM32F373CCT6 SADC 规则组配置与使用
#### 1. ADC概述
STM32F373系列微控制器集成了高性能的模数转换器(SADC),支持多种工作模式和灵活的通道配置。SADC可以分为规则组和注入组两种采样序列[^1]。
#### 2. 规则组的功能特点
规则组是指按照预定义顺序依次执行的一组ADC转换操作。其主要特点是可以通过软件设置多个输入通道,并按指定次序完成连续采样。规则组适用于常规数据采集场景,能够满足大多数应用需求。
#### 3. 配置流程详解
##### (1) 启用时钟
在开始任何ADC操作之前,必须通过RCC寄存器启用相应的外设时钟。这一步骤确保了ADC模块获得稳定的电源供应并正常运行。
```c
// 开启ADC时钟
RCC->APB2ENR |= RCC_APB2ENR_ADC1EN;
```
##### (2) 初始化参数设定
需调整分辨率、扫描方向以及外部触发源等相关选项来适应具体应用场景的需求。这些初始化过程通常涉及修改控制状态寄存器(CSR)及样本时间寄存器(SMPR)。
```c
// 设置分辨率为12位
ADC1->CR1 &= ~ADC_CR1_RES;
// 扫描模式开启
ADC1->CR1 |= ADC_CR1_SCAN;
// 外部触发禁用
ADC1->CR2 &= ~ADC_CR2_EXTTRIG;
```
##### (3) 定义规则序列
利用SMPTxR寄存器指明各通道对应的采样周期长度;再借助SQRxR寄存器安排好参与测量的具体端口及其排列位置。
```c
// 设定第0号通道为PA0, 并分配给第一个被测项目
ADC1->SQR3 = ((uint32_t)(Channel_0 << POSITION_VAL(ADC_SQR3_SQ1)));
// PA0对应于GPIOA上的引脚编号0
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.Pin = GPIO_PIN_0;
HAL_GPIO_Init(GPIOA,&GPIO_InitStructure);
```
##### (4) 转换启动方式
可以选择立即手动触发改变或者等待特定事件发生后再自动激活。对于后者而言,则要预先规划好中断服务函数(ISRs),以便及时响应结果返回的通知信号。
```c
// 单次转换模式下直接发起请求
ADC1->CR2 |= ADC_CR2_SWSTART;
// 中断使能
ADC1->CR1 |= ADC_CR1_EOCIE;
NVIC_EnableIRQ(ADC_IRQn);
```
##### (5) 数据读取处理
当一次完整的量化结束后,最终数值会被存储至DR寄存器之中待提取分析。此时可通过轮询EOC标志位得知当前进度状况,亦或是依赖先前建立好的ISR机制实现异步获取目标值的目的。
```c
if((ADC1->SR & ADC_SR_EOC)!= RESET){
uint16_t result=ADC1->DR;
}
```
#### 4. 注意事项
- **校准**:每次上电重启之后都建议重新做一次自检动作以消除可能存在的偏差影响。
- **功耗管理**:如果长时间不需要进行检测作业的话记得关闭相应部件从而降低整体能耗水平。
- **抗干扰设计**:考虑到实际环境中可能存在电磁噪声等因素干扰测量精度,在硬件布局阶段就应该充分考虑屏蔽措施等问题。
---
阅读全文
相关推荐

















