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

文章目录

  • 前言
  • 一、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.rhkb.cn/news/147609.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【分布式云储存】Springboot微服务接入MinIO实现文件服务

文章目录 前言技术回顾准备工作申请accessKey\secretKey创建数据存储桶公共资源直接访问测试 接入springboot实现文件服务依赖引入配置文件MinIO配置MinIO工具类 OkHttpSSLSocketClient兼容ssl静态资源预览解决方案资源上传预览测试测试结果 前言 上篇博客我们介绍了分布式云存…

UCOS的任务创建和删除

一、任务创建和删除的API函数 1、任务创建和删除本质就是调用uC/OS的函数 API函数 描述 OSTaskCreate() 创建任务 OSTaskDel() 删除任务 注意: 1,使用OSTaskCreate() 创建任务,任务的任务控制块以及任务栈空间所需的内存&#xff0c…

【云备份项目】:环境搭建(g++、json库、bundle库、httplib库)

文章目录 1. g 升级到 7.3 版本2. 安装 jsoncpp 库3. 下载 bundle 数据压缩库4. 下载 httplib 库从 Win 传输文件到 Linux解压缩 1. g 升级到 7.3 版本 🔗链接跳转 2. 安装 jsoncpp 库 🔗链接跳转 3. 下载 bundle 数据压缩库 安装 git 工具 sudo yum…

Linux性能优化--性能工具-系统CPU

2.0.概述 本章概述了系统级的Linux性能工具。这些工具是你追踪性能问题时的第一道防线。它们能展示整个系统的性能情况和哪些部分表现不好。 1.理解系统级性能的基本指标,包括CPU的使用情况。 2.明白哪些工具可以检索这些系统级性能指标。 2.1CPU性能统计信息 为…

北京开发APP需要多少钱

北京开发一个移动应用(APP)的费用因多种因素而异,包括项目的规模、复杂性、所需功能、设计要求、技术选择、开发团队的经验和地理位置等。一般来说,北京的APP开发费用通常较高,因为这是中国的主要技术和创新中心之一&a…

C++语言GDAL批量裁剪多波段栅格图像:基于像元个数裁剪

本文介绍基于C 语言的GDAL模块,按照给定的像元行数与列数,批量裁剪大量多波段栅格遥感影像文件,并将所得到的裁剪后新的多波段遥感影像文件保存在指定路径中的方法。 在之前的文章中,我们多次介绍了在不同平台,或基于不…

力扣 -- 322. 零钱兑换(完全背包问题)

参考代码&#xff1a; 未优化代码&#xff1a; class Solution { public:int coinChange(vector<int>& coins, int amount) {int n coins.size();const int INF 0x3f3f3f3f;//多开一行&#xff0c;多开一列vector<vector<int>> dp(n 1, vector<i…

ADB的概念、使用场景、工作原理

文章目录 一、adb概念&#xff1a;Android Debug Bridge&#xff0c;一个可以控制安卓设备的通用命令行工具二、adb的使用场景&#xff1a;操作手机设备、app 自动化测试1.传输文件2.兼容性测试&#xff08;手机墙&#xff09;3.云测平台4.测试框架底层封装&#xff1a;APP自动…

【生命周期】

生命周期 1 引出生命周期2 分析生命周期3 总结生命周期 1 引出生命周期 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta …

【Java 进阶篇】JDBC PreparedStatement 详解

在Java中&#xff0c;与关系型数据库进行交互是非常常见的任务之一。JDBC&#xff08;Java Database Connectivity&#xff09;是Java平台的一个标准API&#xff0c;用于连接和操作各种关系型数据库。其中&#xff0c;PreparedStatement 是 JDBC 中一个重要的接口&#xff0c;用…

跟着顶级科研报告IPCC学绘图:温度折线/柱图/条带/双y轴

复现IPCC气候变化过程图 引言 升温条带Warming stripes&#xff08;有时称为气候条带&#xff0c;目前尚无合适且统一的中文释义&#xff09;是数据可视化图形&#xff0c;使用一系列按时间顺序排列的彩色条纹来视觉化描绘长期温度趋势。 在IPCC报告中经常使用这一方案 IPCC是…

认识柔性数组

在C99中&#xff0c;结构中的最后一个元素允许是未知大小的数组&#xff0c;这就叫做柔性数组成员 限制条件是&#xff1a; 结构体中最后一个成员未知大小的数组 1.柔性数组的形式 那么我们怎样写一个柔性数组呢 typedef struct st_type {int i;int a[0];//柔性数组成员 }ty…

SpringBoot 可以同时处理多少请求

一、前言 首先&#xff0c;在Spring Boot应用中&#xff0c;我们可以使用 Tomcat、Jetty、Undertow 等嵌入式 Web 服务器作为应用程序的运行容器。这些服务器都支持并发请求处理的能力。另外&#xff0c;Spring Boot 还提供了一些配置参数&#xff0c;可以对 Web 服务器进行调…

互联网Java工程师面试题·MyBatis 篇·第二弹

目录 16、Xml 映射文件中&#xff0c;除了常见的 select|insert|updae|delete标签之外&#xff0c;还有哪些标签&#xff1f; 17、Mybatis 的 Xml 映射文件中&#xff0c;不同的 Xml 映射文件&#xff0c;id 是否可以重复&#xff1f; 18、为什么说 Mybatis 是半自动 ORM 映射…

Vue项目搭建图文详解教程

版权声明 本文原创作者&#xff1a;谷哥的小弟作者博客地址&#xff1a;http://blog.csdn.net/lfdfhl 预备工作 请在本地创建文件夹用于存放Vue项目&#xff0c;例如&#xff1a;创建HelloWorld文件夹存放即将创建的Vue新项目。 创建Vue项目 首先&#xff0c;请在DOS中将目录…

踩坑 | vue动态绑定img标签src属性的一系列报错

文章目录 踩坑 | vue项目运行后使用require()图片也不显示问题描述vue中动态设置img的src不生效问题的原因require is not defined 解决办法1&#xff1a;src属性直接传入地址解决办法2 踩坑 | vue项目运行后使用require()图片也不显示 问题描述 在网上查阅之后&#xff0c;发…

深度学习笔记之线性代数

深度学习笔记之线性代数 一、向量 在数学表示法中&#xff0c;向量通常记为粗体小写的符号&#xff08;例如&#xff0c;x&#xff0c;y&#xff0c;z&#xff09;当向量表示数据集中的样本时&#xff0c;它们的值具有一定的现实意义。例如研究医院患者可能面临的心脏病发作风…

<C++> STL_bitset使用和模拟实现

bitset的介绍 位图的引入 给40亿个不重复的无符号整数&#xff0c;没排过序。给一个无符号整数&#xff0c;如何快速判断一个数是否在这40亿个数中&#xff1f; 要判断一个数是否在某一堆数中&#xff0c;我们可能会想到如下方法&#xff1a; 将这一堆数进行排序&#xff0…

Linux-正则三剑客

目录 一、正则简介 1.正则表达式分两类&#xff1a; 2.正则表达式的意义 二、Linux三剑客简介 1.文本处理工具&#xff0c;均支持正则表达式引擎 2.正则表达式分类 3.基本正则表达式BRE集合 4.扩展正则表达式ere集合 三、grep 1.简介 2.实践 3.贪婪匹配 四、sed …

STM32Cubemx新建F429基础工程

配置STM32CubeMX 配置KEY 配置USART1 配置RCC Project Manager Toolchain 选择 MDK-ARM Code Generator 配置如下 GENERATE CODE 即可 配置Keil5 魔术棒配置 – Target – 勾选 Use MicroLIB – Debug – Flash Download – 勾选Reset and Run 基础代码 /* Private incl…