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

news/2024/6/3 19:31:09 标签: stm32, 嵌入式硬件, 单片机, c++, c语言, 物联网, mcu

文章目录

  • 前言
  • 一、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.niftyadmin.cn/n/5064243.html

相关文章

撰写博客的工具记录

文章目录 前言TyporaPicgoGitee 免费图床ScreenToGifPointofix和Snipaste墨滴社区小结 前言 本文主要目的是记录和分析自己在写博客和相关文档时所用到的工具,单纯记录。按照一篇文章从0到发布的场景进行叙述。 Typora Typora是一款Markdown编辑器。Markdown的优…

数据结构与算法课后题-第三章(顺序队和链队)

#include <iostream> //引入头文件 using namespace std;typedef int Elemtype;#define Maxsize 5 #define ERROR 0 #define OK 1typedef struct {Elemtype data[Maxsize];int front, rear;int tag; }SqQueue;void InitQueue(SqQueue& Q) //初始化队列 {Q.rear …

字符编码的了解

前言&#xff1a; 在编写文件读取功能的过程中&#xff0c;我遭遇了一个棘手的乱码难题。经过细致的排查&#xff0c;发现这一问题的根源在于文件的字符编码。为了帮助大家有效地克服编码差异所带来的开发挑战&#xff0c;因此&#xff0c;我收集了字符集编码的相关知识&#x…

第9讲:VUE中监听器WATCH使用详解

目录 监听器介绍 监听普通属性 监听对象属性 监听路由属性监听器watch 监听器:它是侦听属性值或者计算属性的变化,一旦发生变化可以在函数中进行相应的操作,从而达到change事件监听的效果!监听器是一个对象,以 key-value 的形式表示。key 是需要监听的表达式,value 是对…

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

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

解决caffe中的python环境安装的问题

由于caffe&#xff08;GitHub - BVLC/caffe: Caffe: a fast open framework for deep learning.&#xff09;使用的python版本是2.7&#xff0c;而非python3&#xff0c;所以安装的时候使用命令&#xff1a;sudo apt install python2.7进行安装。 而在安装python的各种包时&am…

Spring Boot的创建和使用(JavaEE进阶系列2)

目录 前言&#xff1a; 1.什么是Spring Boot&#xff1f;为什么要学习Spring Boot&#xff1f; 2.Spring Boot优点 3.创建Spring Boot项目 3.1准备工作 3.2Spring Boot创建 3.2.1通过idea的方式创建 3.2.2通过网页创建 4.Spring Boot中的配置文件 4.1Spring Boot配置…

树莓集团涉足直播产业园区运营,成都直播产业园区再添黑马

树莓集团涉足成都直播产业园运营领域&#xff0c;这一消息引起了业界的广泛关注。在这个无限可能的直播领域中&#xff0c;树莓集团将与上市公司德商产投紧密合作&#xff0c;立志为成都直播行业的发展注入新的活力。成都天府蜂巢直播产业园推行着一系列创新的政策措施&#xf…