一、前言
在嵌入式开发中,ADC(模数转换器)是非常重要的一个外设,广泛应用于电压采样、温度检测、电池电量监控等领域。STM32F103C8T6 内部集成了多达 10 个 12 位 ADC 输入通道,能够快速、精准地对模拟信号进行采样。
本文将以采集一个简单电压信号为例,介绍 STM32F103C8T6 使用标准库实现 ADC 功能的全过程。
二、ADC 基本介绍
STM32F103 系列 ADC 的基本参数如下:
- 12 位分辨率(采样范围 0~4095)
- 采样时间可调(Tsample)
- 支持单次转换、连续转换、扫描转换
- 支持模拟看门狗、中断、DMA 等高级功能
ADC 输入引脚范围为 03.3V,对应数值为 04095(即 4096 个等级),换算公式:
电压值 = ADC_Value / 4096.0 * 3.3V
三、硬件准备
本示例中,将使用 ADC1 的通道 1(PA1) 连接一个电位器或模拟电压源,采样电压值并通过串口打印结果。
引脚对应关系:
ADC 通道 | 引脚 | 说明 |
---|---|---|
ADC1_CH1 | PA1 | 模拟输入引脚 |
确保电压源范围在 0~3.3V 之间,以免烧毁芯片。
四、GPIO 与 ADC 初始化
1. 启用时钟和配置 ADC 输入引脚
void ADC_GPIO_Config(void)
{
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_ADC1, ENABLE);
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN; // 模拟输入
GPIO_Init(GPIOA, &GPIO_InitStructure);
}
2. ADC 初始化配置
void