【STM32基础 CubeMX】ADC的基础使用

news2024/11/22 5:54:06

文章目录

  • 前言
  • 一、ADC是什么
  • 二、使用CubeMX配置ADC
  • 三、代码分析
    • 3.1 cubemx生成代码分析
    • 3.2 ADC HAL库函数
      • HAL_ADC_Start_IT开启adc
      • 中断函数
      • 获取ADC值
  • 四、示例代码:获取光敏电阻的值
  • 总结


前言

在嵌入式系统开发中,STM32系列微控制器是广泛应用的一种硬件平台,而STMicroelectronics提供的CubeMX工具则是一款强大的开发工具,能够显著简化STM32微控制器的配置和初始化过程。其中,ADC(模数转换器)是STM32微控制器中一个重要的外设,用于将模拟信号转换为数字信号。本文将介绍ADC的基础使用,帮助初学者快速入门STM32开发,了解如何配置和使用ADC。


一、ADC是什么

ADC,或者模数转换器,是一种电子设备或模块,它的主要工作是将模拟信号(如声音、光线、温度等)转换成数字信号,以便计算机或微控制器可以理解和处理。这就好像是将模拟世界中的连续信号转换为数字世界中的离散信号。
你可以把ADC想象成一个翻译器,它将来自现实世界的模拟信息翻译成计算机能够理解的语言,这样计算机就能够进行各种各样的处理、分析和控制,比如监测温度、记录声音、控制电机等。
举个例子,如果你有一个温度传感器,它产生的是一个电压信号,这个信号的大小与温度相关。通过连接这个传感器到ADC,ADC会测量电压信号的数值,然后将它转换成数字,比如说20°C等等。这个数字可以被微控制器或计算机用来显示温度、触发报警、或者进行其他各种操作。
所以,ADC就像是一个信号的翻译器,将模拟信号转化为数字形式,以便我们的电子设备能够与外部世界进行交互和处理数据。

二、使用CubeMX配置ADC

1、选择ADC
在这里插入图片描述
2、点击配置时钟界面
在这里插入图片描述
点击yes。

3、把连续转换使能
在这里插入图片描述
4、把ADC的中断给打开
在这里插入图片描述
5、最后生成代码!

三、代码分析

3.1 cubemx生成代码分析

3.2 ADC HAL库函数

HAL_ADC_Start_IT开启adc

HAL_ADC_Start_IT 是STMicroelectronics的HAL库中用于启动ADC(模数转换器)转换并使能中断的函数。下面是其函数原型和参数解释:

函数原型:

HAL_StatusTypeDef HAL_ADC_Start_IT(ADC_HandleTypeDef *hadc);

参数:

hadc:指向 ADC_HandleTypeDef 结构体的指针,用于指定要操作的ADC模块。
作用:

HAL_ADC_Start_IT 函数的作用是启动ADC转换,并使能中断以便在转换完成时通知应用程序。它会开始ADC的转换过程,使得ADC开始采样模拟信号并将其转换为数字值。一旦转换完成,将触发中断,允许应用程序执行与转换结果相关的操作,例如数据处理或存储。
这个函数对于在启动ADC转换时同时启动中断处理非常有用。它允许应用程序在ADC完成转换时接收通知,以便及时处理转换结果,增强了系统的实时性和灵活性。

中断函数

函数原型如下:

void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef *hadc)

获取ADC值

HAL_ADC_GetValue 函数是STMicroelectronics的HAL库中用于获取ADC(模数转换器)转换结果的函数。以下是其函数原型、作用和参数解释:

函数原型:

uint32_t HAL_ADC_GetValue(ADC_HandleTypeDef *hadc);

参数:

hadc:指向 ADC_HandleTypeDef 结构体的指针,用于指定要操作的ADC模块。
作用:

HAL_ADC_GetValue 函数的作用是获取最近一次ADC转换的结果值。它允许应用程序读取ADC转换的数字输出,以便进一步处理、显示或存储。
通常,在启动ADC转换后,您需要等待转换完成,然后使用 HAL_ADC_GetValue 函数来读取转换结果。这个函数返回一个无符号32位整数,包含ADC转换的数字值。您可以将这个值用于后续的应用程序逻辑。

四、示例代码:获取光敏电阻的值

uint32_t vol = 0;

void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef *hadc)
{
	vol = HAL_ADC_GetValue(hadc);
}

总结

本文介绍了在STM32微控制器上使用CubeMX配置和初始化ADC的基础知识。首先,我们讨论了ADC的概念,解释了它是如何将模拟信号转换为数字信号的。接着,我们演示了如何使用CubeMX工具来配置ADC外设,包括选择输入通道、设置采样时间和分辨率等重要参数。然后,我们展示了如何在STM32 HAL库中使用ADC的API函数来启动转换、等待转换完成,并获取转换结果。最后,我们通过一个简单的示例代码展示了如何读取传感器数据并在STM32微控制器上进行处理。

通过本文的学习,读者将对STM32微控制器上的ADC有一个基础的了解,能够开始在自己的嵌入式项目中使用ADC来获取和处理模拟信号。ADC是许多嵌入式应用中的重要组成部分,掌握它的基础知识将为开发更复杂的嵌入式系统打下坚实的基础。希望本文对初学者有所帮助,激发更多人投入到STM32微控制器的学习和开发中。

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

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

相关文章

如何查看postgresql中的数据库大小?

你可以使用以下命令来查看PostgreSQL数据库的大小: SELECT pg_database.datname as "database_name", pg_size_pretty(pg_database_size(pg_database.datname)) AS size_in_mb FROM pg_database ORDER by size_in_mb DESC;这将返回一个表格&#xff0…

Mysql以key-val存储、正常存储的区别

场景 你作为一个服务端工程师,假设产品要求设计这么一个页面,页面上包含很多模块,每个模块都可以单独进行变更,有些模块是富文本。 实现方式有很多,我们来聊比较常用的两种,看看mysql的表如何设计。 第一…

【算法训练-贪心算法 一】买卖股票的最佳时机II

废话不多说,喊一句号子鼓励自己:程序员永不失业,程序员走向架构!本篇Blog的主题是【贪心算法】,使用【数组】这个基本的数据结构来实现,这个高频题的站点是:CodeTop,筛选条件为&…

GROMACS Tutorial 5: Protein-Ligand Complex 中文实战教程

GROMACS Tutorial 5: Protein-Ligand Complex 中文实战教程 前言系统环境特别强调一、预处理阶段1.1 蛋白质配体分离以及除水操作1.2 选择力场识别JZ4配体1.2.1 使用在线力场解析1.2.2 使用官方推荐力场CHARMM36解析 1.3 蛋白的top文件准备1.4 配体的top文件准备1.5 使用CgenFF…

【Java每日一题】— —第十九题:用二维数组存放九九乘法表,并将其输出。(2023.10.03)

🕸️Hollow,各位小伙伴,今天我们要做的是第十九题。 🎯问题: 用二维数组存放九九乘法表,并将其输出。 测试结果如下: 🎯 答案: System.out.println("九九乘法表如…

Stable Diffusion云服务器部署完整版教程

Stable Diffusion云服务器部署完整版教程 2023年07月04日 22:30 3607浏览 18喜欢 22评论 <span class"bili-avatar-icon bili-avatar-right-icon "></span> </div>薯片_AI 粉丝&#xff1a; 1513 文章&#xff1a; 1 设置分组取消关注 已关注 …

CRMEB商城源码开源标准版v5.2.0+后端+前端uni-app开源包安装教程

CRMEB打通版是一款全开源支持商用的PHP多语言商城系统,系统支持微信公众号端、微信小程序端、H5端、PC端多端账号同步&#xff0c;可快速打包生成APP&#xff1b; 播播资源整合格安装测试了CRMEB商城系统功能非常全&#xff0c;官方的文档教程也非常多&#xff0c;包括如何打包…

linux 笔记 安装 anaconda

1 找到anaconda 安装包 Free Download | Anaconda 2 在linux环境中安装对应安装包 3 安装完毕后查看是否安装好 发现不行&#xff0c;需要配置环境变量 4 配置环境变量 vim /etc/profile使用这个&#xff0c;发现对应的文件是只读文件 sudo vim /etc/profile在最下面加一…

【数据结构与算法】- 数组

数组 1.1 数组的定义1.2 数组的创建1.3 数组在内存中的情况2.1 初始化数组2.2 插入元素2.3 删除元素2.4 读取元素2.5 遍历数组 1.1 数组的定义 数组中的是在内存中是连续存储的&#xff0c;内存是由一个个内存单元组成的&#xff0c;每一个内存单元都有自己的地址&#xff0c;…

【匠心打造】从0打造uniapp 可视化拖拽设计 c_o 第十篇

一、click one for uniapp置顶&#xff1a; 全部免费开源 (你商业用途也没关系&#xff0c;不过可以告诉我公司名或者项目名&#xff0c;放在官网上好看点。哈哈-_-) 二、写在之前 距离上一篇更新已经大约4个月了&#xff0c;公司的事情&#xff0c;自己的一些琐事一直没时间…

蓝队分析研判工具箱V0.81,支持14种哥斯拉流量解密|溯源辅助|佛法搜索|shiro、log4j2解密|各种java反编译...

Part1 前言 大家好&#xff0c;我是ABC_123。“蓝队分析研判工具箱”就是把我平时写的蓝队小工具集合起来形成的&#xff0c;重点解决蓝队分析工作中的一些痛点问题。此0.81版本支持哥斯拉webshell全部14种加密流量的解密&#xff0c;感谢"小黑"的帮助&#xff0c;添…

管道-有名管道

一、有名管道 有名管道与匿名管道的不同&#xff1a; 有名管道提供了一个路径名&#xff0c;并以FIFO的文件形式存在于文件系统中。与匿名管道不同&#xff0c;有名管道可以被不相关的进程使用&#xff0c;只要它们可以访问该路径&#xff0c;就能够通过有名管道进行通信。 FI…

7.wifi开发【智能家居:终】,实践总结:智能开关,智能采集温湿,智能灯。项目运行步骤与运行细节,技术归纳与提炼,项目扩展

一。项目运行步骤与运行细节 1.项目运行步骤&#xff08;一定有其他的运行方式&#xff0c;我这里只提供一种我现在使用的编译方式&#xff09; &#xff08;1&#xff09;项目运行使用软件与技术&#xff1a; 1.Virtual linux 使用这个虚拟机进行程序的编译 2.Makefile与shl…

构建捡垃圾机器人的 ROS 2 项目

一、说明 本系列是关于学习如何使用 ROS2、Docker 和 Github 设计、设置和维护机器人项目。 先决条件 — ROS2 软件包的基本知识、实现发布者、订阅者、操作并连接它们。 我们之前在 ROS2 中了解了不同的部分。但是&#xff0c;在我们转向实际的基于硬件的项目之前&#xff0c;…

【C++】C++11——C++11介绍、初始化列表、声明、auto、decltype、nullptr、范围for循环

文章目录 C111.C11介绍2.初始化列表2.1&#xff5b;&#xff5d;初始化2.2 std::initializer_list 3.声明3.1auto3.2decltype3.3nullptr 4.范围for循环 C11 1.C11介绍 C11是C编程语言的一个版本&#xff0c;于2011年发布。C11引入了很多新特性&#xff0c;比如&#xff1a;类型…

多线程 - 单例模式

单例模式 ~~ 单例模式是常见的设计模式之一 什么是设计模式 你知道象棋,五子棋,围棋吗?如果,你想下好围棋,你就不得不了解一个东西,”棋谱”,设计模式好比围棋中的 “棋谱”. 在棋谱里面,大佬们,把一些常见的对局场景,都给推演出来了,照着棋谱来下棋,基本上棋力就不会差到哪…

思科:iOS和iOSXe软件存在漏洞

思科警告说,有人试图利用iOS软件和iOSXe软件中的一个安全缺陷,这些缺陷可能会让一个经过认证的远程攻击者在受影响的系统上实现远程代码执行。 中严重程度的脆弱性被追踪为 CVE-2023-20109 ,并以6.6分得分。它会影响启用Gdoi或G-Ikev2协议的软件的所有版本。 国际知名白帽黑客…

CSS鼠标指针表

(机翻)搬运自:cursor - CSS: Cascading Style Sheets | MDN (mozilla.org) 类型Keyword演示注释全局autoUA将基于当前上下文来确定要显示的光标。例如&#xff0c;相当于悬停文本时的文本。default 依赖于平台的默认光标。通常是箭头。none不会渲染光标。链接&状态contex…

最短路径专题2 Dijkstra 最短距离(堆优化版)

题目&#xff1a;样例&#xff1a; 输入 6 6 0 0 1 2 0 2 5 0 3 1 2 3 2 1 2 1 4 5 1 输出 0 2 3 1 -1 -1 思路&#xff1a; 根据题意&#xff0c;数据范围也小&#xff0c;也可以用朴素版的Dijsktra来做&#xff0c;朴素版的Dijsktra我做过了一遍了&#xff0c;可以看以一下我…

【统计学】Top-down自上而下的角度模型召回率recall,精确率precision,特异性specificity,模型评价

最近在学 logistic regression model&#xff0c;又遇见了几个之前的老面孔。 召回率recall, 精确率precision&#xff0c;特异性spcificity&#xff0c;准确率accuracy&#xff0c;True positive rate&#xff0c;false positive rate等等名词在学习之初遇到的困难在于&#x…