当前位置: 首页 > news >正文

【STM32嵌入式系统设计与开发拓展】——15_ADC

一、问题集结

1、ADC?
(Analog to Digital Converter)即模数转换器,用来将模拟信号转换为数字信号. 模数转换器
2、什么是模拟量?
如温度,湿度等随着时间逐步逐步连续变化的量
3、什么是数字量?
如我们单片机处理的信号010101这些。
在这里插入图片描述
4、什么是分辨率
A/D转换器对输入模拟量微小变化的分辨能力,通常用二进制数的有效位表示。

二、ADC框图

![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/743758acca6c4dba8e427e8aa0f85539.png

三、代码分析

在这里插入图片描述

	/* 设置ADC分频因子 */RCC_ADCCLKConfig(RCC_PCLK2_Div6);                                   // 将ADC时钟设置为PCLK2的1/6,此处PCLK2为72MHz,分频后为12MHz

在这里插入图片描述

	/* 引脚配置 */GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;                           // 配置PA1为ADC输入GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;                       // 模拟输入模式GPIO_Init(GPIOA, &GPIO_InitStructure);                              // 初始化GPIOA	

在这里插入图片描述

	/* ADC配置 */ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;                  // 独立模式,单独使用ADC1ADC_InitStructure.ADC_ScanConvMode = DISABLE;                       // 关闭扫描模式,单通道模式ADC_InitStructure.ADC_ContinuousConvMode = DISABLE;                 // 关闭连续转换模式,单次转换模式ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None; // 软件触发转换ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;              // 数据右对齐ADC_InitStructure.ADC_NbrOfChannel = 1;                             // 转换通道数量为1ADC_Init(ADC1, &ADC_InitStructure);                                 // 初始化ADC1/* 使能ADC */ADC_Cmd(ADC1, ENABLE);/* 复位校准 */ADC_ResetCalibration(ADC1);while (ADC_GetResetCalibrationStatus(ADC1));                        // 等待复位校准结束/* 开始校准 */ADC_StartCalibration(ADC1);while (ADC_GetCalibrationStatus(ADC1));                             // 等待校准结束
/*********************************************************************@Function  : 获得ADC值@Parameter : ch : 通道值 0~3@Return    : ADC值
**********************************************************************/
uint16_t Get_Adc(uint8_t ch)   
{/*设置指定ADC的规则组通道,一个序列,采样时间*/ADC_RegularChannelConfig(ADC1, ch, 1, ADC_SampleTime_239Cycles5 );	//ADC1,ADC通道,采样时间为239.5周期ADC_SoftwareStartConvCmd(ADC1, ENABLE);		                          //使能指定的ADC1的软件转换启动功能while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC ));                     //等待转换结束return ADC_GetConversionValue(ADC1);	                              //返回最近一次ADC1规则组的转换结果}
/*********************************************************************@Function  : 获得ADC的平均值@Parameter : ch : 通道值 0~3times :采集次数@Return    : ADC平均值
**********************************************************************/
uint16_t Get_Adc_Average(uint8_t ch, uint8_t times)
{uint32_t temp_val = 0;      // 初始化累加变量为0uint8_t t;                  // 循环计数变量for (t = 0; t < times; t++) // 循环执行指定次数{temp_val += Get_Adc(ch);  // 获取指定通道的ADC值并累加到temp_valdelay_ms(5);              // 延时5毫秒,等待下一次采样		}return temp_val / times;    // 返回ADC采样值的平均值
}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 重修设计模式-行为型-状态模式
  • Java面试八股之什么是消息队列
  • 智慧景区系统:科技赋能旅游新体验
  • 理解 Go 语言的分组操作
  • JAVA中的ArrayDeque和LinkedList实现Deque,前者不能存NULL结点,后者可以存放NULL。
  • 【upload]-ini-[SUCTF 2019]CheckIn-笔记
  • MySQL 中主键索引的页分裂:深入探讨
  • STM32家族系列的区别
  • 使用go实现一个简单的聊天服务器
  • 机器学习/深度学习——梯度下降法(Gradient descent)详解. 步骤清晰 0基础可看
  • 月薪5W的项目经理是如何面试的?这份面试攻略请收好!
  • Jetson Orin NX 功耗模式选择:MAXN与25W模式的对比与优化建议
  • 聊一聊 Netty 数据搬运工 ByteBuf 体系的设计与实现
  • IP地址证如何实现HTTPS访问?(内网IP、公网IP)
  • Python 之Scikit-learn(五) -- Scikit-learn提供的数据集及其详细介绍
  • Angular 4.x 动态创建组件
  • angular2开源库收集
  • CSS选择器——伪元素选择器之处理父元素高度及外边距溢出
  • Date型的使用
  • JavaScript 是如何工作的:WebRTC 和对等网络的机制!
  • js对象的深浅拷贝
  • Spark in action on Kubernetes - Playground搭建与架构浅析
  • swift基础之_对象 实例方法 对象方法。
  • 对话:中国为什么有前途/ 写给中国的经济学
  • 干货 | 以太坊Mist负责人教你建立无服务器应用
  • 欢迎参加第二届中国游戏开发者大会
  • 经典排序算法及其 Java 实现
  • 判断客户端类型,Android,iOS,PC
  • 前端每日实战:70# 视频演示如何用纯 CSS 创作一只徘徊的果冻怪兽
  • 适配iPhoneX、iPhoneXs、iPhoneXs Max、iPhoneXr 屏幕尺寸及安全区域
  • 中国人寿如何基于容器搭建金融PaaS云平台
  • 《TCP IP 详解卷1:协议》阅读笔记 - 第六章
  • 扩展资源服务器解决oauth2 性能瓶颈
  • #define MODIFY_REG(REG, CLEARMASK, SETMASK)
  • #includecmath
  • #Linux(帮助手册)
  • #pragam once 和 #ifndef 预编译头
  • #Z0458. 树的中心2
  • #我与Java虚拟机的故事#连载18:JAVA成长之路
  • $LayoutParams cannot be cast to android.widget.RelativeLayout$LayoutParams
  • (¥1011)-(一千零一拾一元整)输出
  • (1)(1.8) MSP(MultiWii 串行协议)(4.1 版)
  • (1)常见O(n^2)排序算法解析
  • (备份) esp32 GPIO
  • (层次遍历)104. 二叉树的最大深度
  • (二)PySpark3:SparkSQL编程
  • (附源码)spring boot儿童教育管理系统 毕业设计 281442
  • (附源码)springboot炼糖厂地磅全自动控制系统 毕业设计 341357
  • (每日持续更新)jdk api之StringBufferInputStream基础、应用、实战
  • (五)Python 垃圾回收机制
  • (一)appium-desktop定位元素原理
  • (一一四)第九章编程练习
  • (转)linux自定义开机启动服务和chkconfig使用方法
  • (转载)(官方)UE4--图像编程----着色器开发
  • ./configure,make,make install的作用