首页 > 其他分享 >STM32F407外设ADC配置流程及代码示例

STM32F407外设ADC配置流程及代码示例

时间:2024-07-13 21:07:34浏览次数:16  
标签:CommonInitStructure 示例 配置 InitStructure ADC GPIO STM32F407 ADC3

STM32F407外设ADC配置流程及代码示例

STM32的ADC(模拟-数字转换器)是STM32微控制器系列中集成的一个关键外设,用于将模拟信号(如温度、压力、光强等传感器输出的电压或电流信号)转换为数字信号,以便微控制器能够处理和分析这些信号。

ADC配置流程:

  1. 时钟配置:
    • 启用GPIOF和ADC的时钟。这是配置任何外设之前的重要步骤。
  2. GPIO配置:
    • GPIO引脚配置为模拟输入模式(GPIO_Mode_AN),这是ADC输入的正确配置。
    • 禁用上拉/下拉电阻(GPIO_PuPd_NOPULL),这通常是ADC输入引脚的好选择。
  3. ADC公共配置:
    • 设置ADC为独立模式,并配置了预分频器、DMA访问模式和双采样延迟。配置ADC_Prescaler_Div4ADC_DMAAccessMode_DisabledADC_TwoSamplingDelay_5Cycles`,不同的STM32系列可能具有不同的预分频器选项和采样延迟选项。
  4. ADC实例配置:
    • 设置ADC的分辨率为12位,禁用了扫描模式和连续转换模式,并设置不使用外部触发转换和数据右对齐。这些设置通常适用于单次转换场景。
    • 设置转换数量为1,这意味着每次转换将只涉及一个通道。
  5. ADC通道配置:
    • 选择ADC的第x个通道(对应的引脚),并设置采样时间为3个ADC时钟周期。确保采样时间适合应用需求,因为较长的采样时间可以提高转换精度,但也会降低转换速率。
  6. 使能ADC:
    • 最后使能ADC。在调用ADC_Cmd(ADCx, ENABLE);之后,您应该等待ADC准备就绪,这通常通过检查ADC的状态寄存器来完成。

代码示例

void ADC_Config(void)
{
	ADC_CommonInitTypeDef ADC_CommonInitStructure;
	GPIO_InitTypeDef GPIO_InitStructure;
	ADC_InitTypeDef ADC_InitStructure;

	//1.打开时钟  PF7 -- ADC3_IN5
	RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF, ENABLE);
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC3, ENABLE);
	
	//2.配置引脚
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AN;
	GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL ;
	GPIO_Init(GPIOF, &GPIO_InitStructure);

	//3.配置ADC参数
	ADC_CommonInitStructure.ADC_Mode = ADC_Mode_Independent;	//独立模式
	ADC_CommonInitStructure.ADC_Prescaler = ADC_Prescaler_Div4;
	ADC_CommonInitStructure.ADC_DMAAccessMode = ADC_DMAAccessMode_Disabled;		  //不使用DMA
	ADC_CommonInitStructure.ADC_TwoSamplingDelay = ADC_TwoSamplingDelay_5Cycles;
	ADC_CommonInit(&ADC_CommonInitStructure);
	
	//4.配置ADC的通道
	ADC_InitStructure.ADC_Resolution = ADC_Resolution_12b;//ADC的分辨率为12位											//转换精度  0~4095
	ADC_InitStructure.ADC_ScanConvMode = DISABLE;			//不扫描
	ADC_InitStructure.ADC_ContinuousConvMode = DISABLE;		//不连续
	ADC_InitStructure.ADC_ExternalTrigConvEdge = ADC_ExternalTrigConvEdge_None; //不使用外部触发
	ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;	//右对齐
	ADC_InitStructure.ADC_NbrOfConversion = 1;				//转换数量
	ADC_Init(ADC3, &ADC_InitStructure);
	
	//5.选择ADC的通道
	ADC_RegularChannelConfig(ADC3, ADC_Channel_5, 1, ADC_SampleTime_3Cycles);
	
	//6.使能ADC3
	ADC_Cmd(ADC3, ENABLE);
}

标签:CommonInitStructure,示例,配置,InitStructure,ADC,GPIO,STM32F407,ADC3
From: https://www.cnblogs.com/zkbklink/p/18300724

相关文章

  • 全栈物联网项目:结合 C/C++、Python、Node.js 和 React 开发智能温控系统(附代码示例)
    1.项目概述本文详细介绍了一个基于STM32微控制器和AWSIoT云平台的智能温控器项目。该项目旨在实现远程温度监控和控制,具有以下主要特点:使用STM32F103微控制器作为主控芯片,负责数据采集、处理和控制逻辑采用DHT22数字温湿度传感器,精确采集环境温湿度数据通过ESP8266WiF......
  • 模型部署 - TensorRT 简介及人脸推理简单示例
       TensorRT是Nvidia开发的一个高性能深度学习推理引擎。它主要用于优化和部署已经训练好的深度学习模型,提高模型在NVIDIAGPU硬件上的推理性能。 TensorRT的主要功能和特点包括:  1.模型优化    TensorRT提供了一系列优化技术,包括层融合,张量格式化,kern......
  • adorner 使用示例
    模块介绍adorner是一个现代轻量级的Python装饰器辅助模块。目前该模块仅实现了4个类,对应着4个功能:制造装饰器、执行计时、函数缓存、捕获重试。仓库地址:https://github.com/gupingan/adorner安装该模块可在上方仓库中的Releases页面下载tar.gz文件后离线安装,也......
  • 嵌入式C++、Qt/QML和MQTT:智能工厂设备监控系统的全流程介绍(附代码示例)
    1.项目概述本项目旨在开发一套先进的智能工厂设备监控系统,集成嵌入式技术、工业通信协议和人机界面等多项技术,实现对工厂设备的全方位实时监控、高精度数据采集和智能化分析。该系统将显著提升工厂设备的运行效率,大幅降低维护成本,并为管理层决策提供可靠的数据支持。主要功......
  • 主流json解析框架示例
    主流json解析框架示例jackson、gson、fastjson/fastjson2三种主流json解析框架对比●性能:在性能方面,Fastjson通常被认为是最快的JSON解析库,其次是Jackson和Gson,json-lib的性能相对较低。●API和功能:Jackson提供了非常灵活、强大的API,支持各种高级功能,例如树模型、数据绑定、......
  • BootStrap TreeView示例
    <!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><htmlxmlns="http://www.w3.org/1999/xhtml"><head><title></title>......
  • MS5199T芯片解决方案以及驱动程序(国产三路5VADC)
    一、MS5199T芯片介绍MS5198T/MS5199T为适合高精度测量应用的低功耗、低噪声、三通道差分输入的16bit/24bit模数转换器。其内部集成了低噪声输入缓冲器、低噪声仪表放大器,当增益设置为64,更新速率为4.17Hz时,均方根噪声为10nV。MS5198T/MS5199T还集成了低端电源......
  • Java-Redis缓存穿透、缓存击穿及缓存雪崩(配解决方案及代码示例)
    前言在现代高并发的互联网应用中,缓存技术已成为提升系统响应速度与减轻后端数据库压力的关键手段。Redis,以其卓越的性能和丰富的数据结构,成为众多开发者构建缓存层的首选。然而,随着业务复杂度的增加,Redis缓存层也可能遭遇“缓存穿透”、“缓存击穿”以及“缓存雪崩”等现......
  • 在springboot 中使用Apache HttpClient 4的详细示例
    在SpringBoot中使用ApacheHttpClient,可以通过配置HttpClient的Bean并使用它来发起HTTP请求。下面是一个详细的示例,展示了如何在SpringBoot应用中集成和使用ApacheHttpClient。步骤1:添加依赖在你的pom.xml文件中添加ApacheHttpClient的依赖:<dependency>......
  • 在springboot 中使用Apache HttpClient 5的详细示例
    ApacheHttpComponentsClient5.x是HttpClient的最新版本,与4.x系列相比,5.x系列进行了许多改进和重构,提供了更现代的API和更好的性能。以下是使用步骤步骤1:添加依赖在你的pom.xml文件中添加ApacheHttpClient5.x的依赖:<dependency><groupId>org.apache.htt......