蓝桥杯—STM32G431RBT6(ADC数模转换,从原理到应用)

news2024/9/21 19:08:17

一、什么是ADC?

ADC(Analog-to-Digital Converter)即模数转换器。它是一种将模拟信号转换为数字信号的电子器件。在电子系统中,ADC 起着至关重要的作用,它能将连续变化的模拟量(如电压、电流等)转换为离散的数字量,以便数字电路进行处理、存储和传输。ADC通过将模拟量转化为数字量,例如将连续的电压信号转化为离散的数字信号。

二、配置工程

蓝桥杯竞赛板有两个模拟电压输出,分别是PB15和PB12.STM32G431内部集成2个有最高12位精度ADC(ADC1、ADC2)可配置的转换精度:6位,8位,10位,12位。12位精度为:0000 0000 0000 ~ 1111 1111 1111,2^12 = 4096。意思是把0 ~ 3.3v分成4096份  一份精度约为0.0008v(电压变换了0.0008v,ADC都能感受到).如原理图所示,两个采集端均存在跳线帽,若跳线帽拔掉,则无法正常工作。

分别配置PB15和PB12

三、使用步骤

在adc.c中编写getADC1和getADC2函数,目的是为了获取AD值,并在adc.h声明
uint16_t getADC2(void)
{
uint16_t adc=0;
	HAL_ADC_Start(&hadc2);//启动ADC转换
	adc=HAL_ADC_GetValue(&hadc2);//获取AD值
	return adc;
}
uint16_t getADC1(void)
{
uint16_t adc=0;
	HAL_ADC_Start(&hadc1);
	adc=HAL_ADC_GetValue(&hadc1);
	return adc;
}

对上述代码进行详解

  1. uint16_t adc=0;:定义一个 16 位无符号整数变量 adc,并初始化为 0。
  2. HAL_ADC_Start(&hadc2);:调用特定的硬件抽象层(HAL)函数来启动 hadc2 的 ADC 转换。
  3. adc=HAL_ADC_GetValue(&hadc2);:使用 HAL 函数获取 hadc2 转换得到的 AD 值,并将其存储到 adc 变量中。
  4. return adc;:函数返回获取到的 AD 值。

uint16_t adc=0初始化为 0 主要有以下原因:

  1. 明确初始状态:确保变量在使用前有一个明确的、可预期的初始值,避免出现未定义或不确定的情况。
  2. 避免潜在错误:如果不进行初始化,变量可能会包含随机或无效的数据,这可能导致后续计算或操作出现错误。
  3. 一致性:将其初始化为 0 可以保持代码的一致性和可读性,使代码更易于理解和维护。

&hadc2 表示取变量 hadc2 的地址。

在这个函数中,它是将 hadc2 的地址传递给 HAL_ADC_Start 和 HAL_ADC_GetValue 等函数,以便这些函数能够对指定的 ADC 进行操作。

在adc.h中声明
/* USER CODE BEGIN Prototypes */
uint16_t getADC2(void);
uint16_t getADC1(void);
/* USER CODE END Prototypes */
在main.c中添加校准函数,也可以放置与adc.c中的初始化函数中void MX_ADC1_Init(void),void MX_ADC2_Init(void)
HAL_ADCEx_Calibration_Start(&hadc1,ADC_SINGLE_ENDED);
HAL_ADCEx_Calibration_Start(&hadc2,ADC_SINGLE_ENDED);

这两行代码的作用是分别启动hadc1hadc2这两个 ADC 的校准操作。ADC_SINGLE_ENDED表示单端模式的校准。通过执行校准,可以提高 ADC 的测量精度。

 定义两个值,用来获取ADC采集到的值
 double volt_R37;
 double volt_R38;

double是双精度浮点数,是一种计算机数据类型。它具有更高的精度和范围,能表示比单精度浮点数更精确的小数。

volt_R37=getADC2()*3.2/4096;
volt_R38=getADC1()*3.2/4096;

这两行代码是在对获取到的 ADC 值进行进一步的计算和转换。getADC2()getADC1()获取到的是经过 ADC 转换后的数值,然后分别乘以3.2/4096,可能是为了将 ADC 值转换为实际的电压值。

sprintf(buf,"     R37:%.2fV      ",volt_R37);
	LCD_DisplayStringLine(Line4,(uint8_t*)buf);
		sprintf(buf,"     R38:%.2fV      ",volt_R38);
	LCD_DisplayStringLine(Line5,(uint8_t*)buf);

 %.2f表示以保留的浮点数形式输出电压值两位小数

四、效果展示

五、代码开源

通过网盘分享的文件:16-TEST7-ADC.zip
链接: https://pan.baidu.com/s/1N3-lp_dettxJMHnpxKlvHg?pwd=0820 提取码: 0820

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2153079.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

openstack中的rabbitmq

基本概念 基础介绍 exchange:用于分发信息,有direct、fanout、topic、headers; binding:exchange、queue之间的虚拟连接,由一个或者多个routing key组成; queues:用来暂存消息,供…

【工具】Windows|两款开源桌面窗口管理小工具Deskpins和WindowTop

总结 Deskpins 功能单一,拖到窗口上窗口就可以置顶并且标记钉子标签,大小 104 KB,开源位置:https://github.com/thewhitegrizzli/DeskPins/releases WindowTop 功能完善全面强大,包括透明度、置顶、选区置顶等一系列功…

API安全推荐厂商瑞数信息入选IDC《中国数据安全技术发展路线图》

近日,全球领先的IT研究与咨询公司IDC发布报告《IDC TechScape:中国数据安全技术发展路线图,2024》。瑞数信息凭借其卓越的技术实力和广泛的行业应用,被IDC评选为“增量型”技术曲线API安全的推荐厂商。 IDC指出,数据安…

Python 如何调用讯飞星火大模型API

1 讯飞星火简介 讯飞星火是科大讯飞推出的一款先进的人工智能大模型,它具备强大的语言理解和知识问答能力,能够在多种场景中提供智能化服务。2024年6月27日,科大讯飞发布了讯飞星火大模型V4.0版本,全面对标GPT-4 Turbo。现有的模…

【JavaScript】LeetCode:41-45

文章目录 41 排序链表42 合并k个升序链表43 LRU缓存44 二叉树的中序遍历45 二叉树的最大深度 41 排序链表 递归 归并排序找到链表中心点,从中心点将链表一分为二。奇数个节点找中心点,偶数个节点找中心左边的点作为中心点。快慢指针找中心点&#xff0c…

thinkPHP 8.0.4 安装

windows 上安装最新版 thinkPHP8.0.4 下载phpStudy V8.1:小皮面板安装Composer2.x,Composer是PHP的一个依赖管理工具,主要功能包括依赖管理、版本控制、自动加载、扩展开发以及集成其他工具。安装 php8.0.2 4. 网站-管理-compose&#xff0c…

基于SpringBoot+Vue的图书管理系统

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码 精品专栏:Java精选实战项目…

使用k8s搭建mariadb+nginx+wordpress

前期准备 1.启动docker进程 2.拉取三个镜像 mariadb:latest wordpress:latest nginx:alpine 3.保存三个镜像 docker save -o wordpress.tar wordpress:latest 4.上传到其他的节点主机 scp wordpress.tar root 192.168.118.88:~ 5.切换到node01和node02两个节点上 ctr…

哪款骨传导耳机值得入手?五款精选好口碑骨传导耳机分享~

不知不觉中,耳机已成为我们生活中不可或缺的电子单品。无论是早晨出门、通勤、工作,甚至入睡,耳机几乎随时相伴。尽管大家都知道长期佩戴耳机会对听力产生影响,但骨传导耳机的出现为我们提供了更安全、卫生的选择,它们…

sql中的union与union all区别

sql中的union与union all区别 1、 区别2、效率3、使用建议 💖The Begin💖点点关注,收藏不迷路💖 1、 区别 union: 功能:合并多个查询结果集,并自动去除重复行。特点:结果集中不包含重…

从一个文本文件中挑选出符合条件的内容行

某天,张三得到一个需求,将如下格式的文本文件中的文件名开头的内容行提取出来,存入一个新的文本文件。 ok 0 文件名:1_zoukaige.mp3 index:10 文件名:2_dahan.mp3 index:20 文件名:3_kuai.mp3 index:30 文件…

Windows上创建批处理.bat文件并且注册为开机自启(Python-web微服务)

1. winodws桌面点击创建文本文件 (文件名称.txt) 2. 将如下代码写入txt文件中 echo off if "%1""h" goto begin start mshta vbscript:createobject("wscript.shell").run("""%~nx0"" h"…

马踏棋盘c++

马踏棋盘c 题目回溯问题模型特征模型 代码 题目 马踏棋盘算法,即骑士周游问题。将马放在国际象棋的 88 棋盘的某个方格中,马按走棋规则(马走日字)进行移动。每个方格只进入一次,走遍棋盘上全部 64 个方格。 回溯问题模型 特征 解组织成树…

JavaWeb初阶 day1

目录 tomcat目录结构 tomcat:web服务器软件 项目部署的方式 直接将项目放到webapps下 配置conf/server.xml文件 在conf\Catalina\localhost创建任意名称的xml文件。在文件中编写 静态项目和动态项目 Servlet Servlet执行原理 Servlet方法(生命周期&#x…

数字化转型的理论框架对比:从多维视角指导企业成功变革对比DPBOKIT4ITCOBITTOGAF

数字化转型的多维框架解析 在数字化时代,企业如何有效实现数字化转型已成为其生存和发展的关键问题。然而,市场上关于数字化管理的各种框架和理论并存,企业需要根据自身的需求选择最适合的指导路径。本文将通过对几个核心理论框架的对比&…

亿发工单系统:让任务风平浪静

在现代企业的日常运营中,工单管理系统已经成为必不可少的工具,无论是生产制造、IT运维,还是客服支持,工单系统的存在都是为了高效处理任务、跟踪进展、分配资源。然而,现实中的工单管理,往往不是“风平浪静…

初识模版!!

初识模版 1.泛型编程1.1 如何实现一个交换函数呢(使得所有数据都可以交换)?1.2 那可以不可以让编译器根据不同的类型利用该模子来生成代码呢? 2.模版类型2.1 模版概念2.2 函数模版的原理2.3 函数模板的实例化2.4 模板参数的匹配原…

linux 操作系统下dhcpd命令介绍和案例应用

linux 操作系统下dhcpd命令介绍和案例应用 DHCP(动态主机配置协议)在Linux操作系统中用于自动为网络中的设备分配IP地址和其他网络配置 DHCP的基本概念 DHCP协议通过UDP工作,主要有两个用途: 自动分配IP地址给网络中的设备。提…

化学分子结构检测系统源码分享

化学分子结构检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer…

git push出错Push cannot contain secrets

报错原因: 因为你的代码里面包含了github token明文信息,github担心你的token会泄漏,所以就不允许你推送这些内容。 解决办法: 需要先把代码里面的github token信息删除掉,并且删掉之前的历史提交,只要包…