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

一、什么是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.xdnf.cn/news/147273.html

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

相关文章

ps学习。

有大量的图要扣,淘宝5-15块扣一个,尽管蛮便宜的,但是架不住量大啊,还是好好ps,也能省一大笔钱。 填充 在这里有个油漆桶,一开始也叫渐变色,堆放在一起了,我觉得这不是个好设计。。…

pycharm 使用 translation 插件通过openai进行翻译

pycharm 使用 translation 插件通过openai进行翻译 1. 安装插件2. 配置插件3. 翻译 1. 安装插件 2. 配置插件 3. 翻译 调用 openai 时使用的提示词如下&#xff1a; <|im_start|>system\nYou are a translation engine that can only translate text and cannot interpr…

Vue学习记录之七(组件之间传参)

一、父传子 1、父组件传递 父&#xff1a; App.vue&#xff0c; 通过使用组件 <导入的组件名 :属性名1“” :属性名2“”></导入的组件名>,传递给子组件 传递了一个t字符串类型是不需要v-bind&#xff0c;也就是不需要冒号&#xff0c;非字符串类型的必须加 v-bi…

CTC loss 博客转载

论文地址&#xff1a; https://www.cs.toronto.edu/~graves/icml_2006.pdf 为了对应这个图&#xff0c;我们假设一种符合的模型情况&#xff1a; 英文OCR&#xff0c;37个类别&#xff08;26个小写字母10个汉字空格&#xff09;&#xff0c;最大输出长度8个字符 模型预测结果…

PCL 计算点云的平均密度(方法一)

目录 一、概述 1.1原理 1.2实现步骤 1.3应用场景 二、代码实现 2.1关键函数 2.2完整代码 三、实现效果 PCL点云算法汇总及实战案例汇总的目录地址链接&#xff1a; PCL点云算法与项目实战案例汇总&#xff08;长期更新&#xff09; 一、概述 本文将介绍如何计算点云的…

如何避开学习和研究机器人方向无价值的知识节约时间

往昔 这是一篇十年前就想写&#xff0c;但是一直没有实力和勇气落笔的文字。 如今 简约 授之以鱼&#xff0c;不如授之以渔。 啰嗦 机器人方向如何简单判定这个知识是否有价值。 只谈一个方向&#xff0c;就是这个知识点是“死”还是“活”&#xff1f; 什么是“死”&am…

element-ui表格操作大全

一、基础表格展示 数据绑定&#xff1a; 在el-table元素中注入data对象数组&#xff0c;在el-table-column&#xff08;列&#xff09;中使用prop属性来对应对象中的键名&#xff0c;使用label属性定义列名 元素案例内容&#xff1a; <el-table border :data"userL…

举例说明:自然语言处理实战项目

自然语言处理&#xff08;Natural Language Processing, NLP&#xff09;是人工智能领域的一个重要分支&#xff0c;旨在使计算机能够理解、解释和生成人类语言。以下是一些NLP实战项目的示例&#xff1a; 1. 情感分析&#xff08;Sentiment Analysis&#xff09; 项目描述: …

【LLM学习之路】9月16日 第六天

【LLM学习之路】9月16日 第六天 损失函数 L1Loss 可以取平均也可以求和 参数解析 input &#xff08;N&#xff0c;*&#xff09; N是batchsize&#xff0c;星号代表可以是任意维度 不是输入的参数&#xff0c;只是描述数据 target 形状要同上 MSELoss平方差 CrossEntr…

(done) 声音信号处理基础知识(5) (Types of Audio Features for Machine Learning)

参考&#xff1a;https://www.youtube.com/watch?vZZ9u1vUtcIA 声学特征描述了声音&#xff0c;不同特征捕捉声音的不同方面性质 声学特征有助于我们构建智能声学系统 声学特征分类有&#xff1a; 1.抽象等级 2.时域视野 3.音乐的部分 4.信号域 5.机器学习方法 如下图展示…

力扣中等 33.搜索旋转排序数组

文章目录 题目介绍题解 题目介绍 题解 首先用 153. 寻找旋转排序数组中的最小值 的方法&#xff0c;找到 nums 的最小值的下标 i。 然后分类讨论&#xff1a; 如果 target>nums[n−1]&#xff0c;在 [0,i−1] 中二分查找 target。 如果 target≤nums[n−1]&#xff0c;那…

51单片机——独立按键

一、独立按键对应单片机P3管脚&#xff0c;如图 二、按键点亮LED灯 #include <STC89C5xRC.H> void main() { while(1) { if(P300) { P200; } else { P201; } } } 当按键为0时&#xff0c;代表按下&#xff0c;所以当P30按下时&#xff0c;让P20&#xff1d;0&#…

二叉树(二)深度遍历和广度遍历

一、层序遍历 广度优先搜索&#xff1a;使用队列&#xff0c;先进先出 模板&#xff1a; 1、定义返回的result和用于辅助的队列 2、队列初始化&#xff1a; root非空时进队 3、遍历整个队列&#xff1a;大循环while(!que.empty()) 记录每层的size以及装每层结果的变量&a…

leetcode第十三题:罗马数字转整数

罗马数字包含以下七种字符: I&#xff0c; V&#xff0c; X&#xff0c; L&#xff0c;C&#xff0c;D 和 M。 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例如&#x…

LeetCode[中等] 215. 数组中的第 K 个最大元素

给定整数数组 nums 和整数 k&#xff0c;请返回数组中第 k 个最大的元素。 请注意&#xff0c;你需要找的是数组排序后的第 k 个最大的元素&#xff0c;而不是第 k 个不同的元素。 你必须设计并实现时间复杂度为 O(n) 的算法解决此问题。 思路&#xff1a;基于快排改进的快速…

【全网最全】2024华为杯数学建模C题高质量成品查看论文!【附带全套代码+数据】

题 目&#xff1a; ___基于数据驱动下磁性元件的磁芯损耗建模 完整版获取&#xff1a; 点击链接加入群聊【2024华为杯数学建模助攻资料】&#xff1a;http://qm.qq.com/cgi-bin/qm/qr?_wv1027&kxtS4vwn3gcv8oCYYyrqd0BvFc7tNfhV7&authKeyedQFZne%2BzvEfLEVg2v8FOm%…

计算机基础(Computer Fundamentals)

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:Linux运维老纪的首页…

【学习笔记】手写Tomcat 四

目录 一、Read 方法返回 -1 的问题 二、JDBC 优化 1. 创建配置文件 2. 创建工具类 3. 简化 JDBC 的步骤 三、修改密码 优化返回数据 创建修改密码的页面 注意 测试 四、优化响应动态资源 1. 创建 LoginServlet 类 2. 把登录功能的代码放到 LoginServlet 类 3. 创…

关于有源蜂鸣器及无源蜂鸣器的区别及驱动各类单片机案例

关于有源蜂鸣器及无源蜂鸣器的区别及驱动各类单片机案例 有源蜂鸣器与无源蜂鸣器区别有源蜂鸣器无源蜂鸣器模块化有源蜂鸣器及无源蜂鸣器驱动方式的说明 有源、无源蜂鸣器代码驱动总结 有源蜂鸣器与无源蜂鸣器区别 有源蜂鸣器与无源蜂鸣器区别在于是否有振荡源。 有源蜂鸣器即…

【BEV 视图变换】Ray-based(2): 代码复现+画图解释 基于深度估计、bev_pool

paper&#xff1a;Lift, Splat, Shoot: Encoding Images from Arbitrary Camera Rigs by Implicitly Unprojecting to 3D code&#xff1a;https://github.com/nv-tlabs/lift-splat-shoot 一、完整复现代码(可一键运行)和效果图 import torch import torch.nn as nn import mat…