登录/注册

stm32f407adc教程

更多

以下是一个针对 STM32F407 ADC 模块的基础使用教程,涵盖单通道采集、多通道采集和 DMA 传输模式,基于标准库(Standard Peripheral Library)和 HAL 库两种方式说明。


一、ADC 基础概念

STM32F407 的 ADC 是 12 位逐次逼近型模数转换器,支持:


二、单通道采集(标准库)

1. 硬件连接

假设使用 ADC1 通道 5(对应 GPIO PA5),连接一个电位器或传感器。

2. 初始化步骤

#include "stm32f4xx.h"

void ADC1_Init(void) {
    GPIO_InitTypeDef GPIO_InitStruct;
    ADC_InitTypeDef ADC_InitStruct;
    ADC_CommonInitTypeDef ADC_CommonInitStruct;

    // 1. 使能时钟
    RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE); // PA5
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE);

    // 2. 配置 GPIO 为模拟输入
    GPIO_InitStruct.GPIO_Pin = GPIO_Pin_5;
    GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AN;
    GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_NOPULL;
    GPIO_Init(GPIOA, &GPIO_InitStruct);

    // 3. ADC 公共配置
    ADC_CommonInitStruct.ADC_Mode = ADC_Mode_Independent; // 独立模式
    ADC_CommonInitStruct.ADC_Prescaler = ADC_Prescaler_Div4; // ADC 时钟 = 84MHz / 4 = 21MHz
    ADC_CommonInitStruct.ADC_DMAAccessMode = ADC_DMAAccessMode_Disabled;
    ADC_CommonInitStruct.ADC_TwoSamplingDelay = ADC_TwoSamplingDelay_5Cycles;
    ADC_CommonInit(&ADC_CommonInitStruct);

    // 4. ADC1 初始化
    ADC_InitStruct.ADC_Resolution = ADC_Resolution_12b;
    ADC_InitStruct.ADC_ScanConvMode = DISABLE;       // 单通道关闭扫描
    ADC_InitStruct.ADC_ContinuousConvMode = DISABLE; // 单次转换
    ADC_InitStruct.ADC_ExternalTrigConv = ADC_ExternalTrigConv_T1_CC1; // 软件触发
    ADC_InitStruct.ADC_DataAlign = ADC_DataAlign_Right;
    ADC_InitStruct.ADC_NbrOfConversion = 1;
    ADC_Init(ADC1, &ADC_InitStruct);

    // 5. 配置通道
    ADC_RegularChannelConfig(ADC1, ADC_Channel_5, 1, ADC_SampleTime_480Cycles);

    // 6. 使能 ADC 并校准
    ADC_Cmd(ADC1, ENABLE);
    ADC_StartCalibration(ADC1);
    while(ADC_GetCalibrationStatus(ADC1) != RESET); // 等待校准完成
}

uint16_t ADC_Read(void) {
    ADC_SoftwareStartConv(ADC1);        // 启动转换
    while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC)); // 等待转换完成
    return ADC_GetConversionValue(ADC1); // 返回12位结果
}

三、多通道 + DMA 传输(HAL 库)

1. STM32CubeMX 配置

2. 代码示例

// 在 main.c 中定义全局变量
uint16_t adc_values[3]; // 存储3个通道的转换结果

// 启动ADC+DMA转换
HAL_ADC_Start_DMA(&hadc1, (uint32_t*)adc_values, 3);

// 在主循环中可直接读取 adc_values[0], adc_values[1], adc_values[2]

四、关键注意事项

  1. 参考电压:确保 VREF+VREF- 正确连接(通常 VREF+ = 3.3V,VREF- = GND)。
  2. 时钟配置:ADC 时钟不得超过 36 MHz(对于 STM32F407)。
  3. 校准:上电后必须执行校准。
  4. 采样时间:根据信号源阻抗调整采样时间(高阻抗需更长采样时间)。
  5. DMA 中断:多通道传输建议使用 DMA 中断或轮询。

五、常见问题

  1. 采样值跳动

    • 检查电源和地是否稳定。
    • 添加RC滤波电路。
    • 适当增加采样时间。
  2. DMA 不工作

    • 检查 DMA 通道是否与 ADC 匹配。
    • 确认内存地址和长度正确。
  3. 通道映射错误

    • 参考《STM32F4xx参考手册》的 ADC 通道-GPIO 映射表。

六、进阶功能


参考资料

  1. 《STM32F4xx 参考手册》(RM0090)- 第 11 章 ADC
  2. 《STM32F4 标准外设库用户手册》
  3. STM32CubeF4 HAL 库例程

如有具体问题,可进一步提供代码或硬件配置细节,帮助你调试!

STM32F407的晶振选型分析

STM32F407的最佳晶振选项

2025-11-07 12:03:28

原装STM32F407VET6 意法半导体32位MCU微控制器

1970-01-01 08:00:00 至 1970-01-01 08:00:00

STM32F407ZGT6

1970-01-01 08:00:00 至 1970-01-01 08:00:00

STM32F407VET6

STM32F407VET6规格书

资料下载 jf_90271085 2023-02-07 15:59:07

STM32F407原理图下载

STM32F407原理图下载

资料下载 AloneMonster111 2022-01-17 13:44:59

STM32F407引脚资源总结

STM32F407引脚资源总结定时器 串口 ADC

资料下载 陈文博 2021-12-27 18:54:47

STM32F407 DCMI摄像头源码

STM32F407 DCMI摄像头源码(电源技术存在的问题总结)-【资源描述】:STM32F407 DCMI摄像头源码【编程语言】:C语言

资料下载 h1654155275.0032 2021-09-16 16:15:00

基于STM32F407ZGT6单片机的引脚核心板

基于STM32F407ZGT6单片机的引脚核心板

资料下载 kylefa 2021-06-30 09:13:06

stm32f407vet6原理介绍

STM32F407VET6是一款基于ARM Cortex-M4内核的高性能微控制器,由STMicroelectronics公司生产。它具有丰富的外设和功能,广泛应用于各种嵌入式系统开发。本文将介绍

2024-01-03 16:49:28

STM32F407VET6 一款STM32位微控制器MCU(ST意法)

1970-01-01 08:00:00 至 1970-01-01 08:00:00

STM32F407+FreeRTOS+LWIP1.4.1移植问题记录

最近在学习物联网相关的知识,打算用ST的开发板STM32F407ZGT6作为控制中心,上面搭载FreeROTS实时系统,STM32F407开发板作为 TCP client

2023-07-21 14:09:08

国产优秀替代_APM32F407替代STM32F407记录

前言 最近一段时间在玩极海的APM32F407系列的MCU,在研究一段时间后发现其资源和意法半导体的STM32F407不相上下。通过对比两者的数据手册和参考手册,我发现APM32

2022-05-10 11:22:36

STM32F407的12位ADC是什么?有何功能

STM32F407的12位ADC是什么?有何功能?

2022-01-25 07:08:46

STM32F407ADC有哪些性能

STM32F407的ADC有哪些性能?STM32F407的ADC性能受到

2021-10-18 09:28:35

STM32F407ADC+DMA该如何去使用呢

怎样去读取ADC的值?STM32F407的ADC+DMA该如何去使用呢?

2021-10-18 08:34:20
7天热门专题 换一换
相关标签