一、ADC模块简介
STM32F103RCT6内置3个12位逐次逼近型ADC,主要特性:
-
12位分辨率
-
18个输入通道(16个外部+2个内部)
-
支持单次/连续/扫描模式
-
0.5us转换时间(时钟配置为14MHz时)
-
支持DMA数据传输
-
温度传感器和VREFINT内部通道
二、硬件设计
1. 引脚对应关系
以ADC1为例:
-
PA0 → ADC1_IN0
-
PA1 → ADC1_IN1
-
...
-
PA7 → ADC1_IN7
-
PB0 → ADC1_IN8
-
PB1 → ADC1_IN9
2. 参考电路
-
参考电压:VDDA接3.3V,VSSA接地
-
模拟输入信号范围:0~3.3V
-
建议在输入引脚增加0.1uF滤波电容
三、软件配置(标准库版本)
1. 单通道单次转换
#include "stm32f10x.h"
void ADC1_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
ADC_InitTypeDef ADC_InitStructure;
// 使能时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_ADC1, ENABLE);
// 配置PA0为模拟输入
GPIO_