首页 > 其他分享 >【STM32基础 CubeMX】ADC的基础使用

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

时间:2023-10-03 15:01:36浏览次数:37  
标签:转换 函数 STM32 ADC CubeMX HAL 微控制器

@TOC


前言

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


一、ADC是什么

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

二、使用CubeMX配置ADC

1、选择ADC

【STM32基础 CubeMX】ADC的基础使用_应用程序

2、点击配置时钟界面

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

点击yes。3、把连续转换使能

【STM32基础 CubeMX】ADC的基础使用_应用程序_03

4、把ADC的中断给打开

【STM32基础 CubeMX】ADC的基础使用_模数转换器_04

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微控制器的学习和开发中。

标签:转换,函数,STM32,ADC,CubeMX,HAL,微控制器
From: https://blog.51cto.com/u_16176403/7693257

相关文章

  • 嵌入式开发环境Vscode开发STM32单片机程序
       STM32单片机非常强大,大多数教程都是使用keil编译器,keil是收费的而gcc是开源免费的。这里介绍一些使用gcc+ vscode 开发单片机程序的经验。(这里不解释gcc是什么)。第一:环境准备gccARM开发者官网 https://developer.arm.com/我有个习惯:尽量使用免安装版软件,直接解......
  • STM32之I2C通信
    I2C通信学习资料:江科大-STM32入门教程全面解析I2C通信协议-电子工程专辑爱上半导体-I2C通讯协议前言线与:连接在总线上的设备只要有一个输出低电平(0)总线就为低电平(0),只有全部设备都为高阻态时总线才是高电平(1)I2C简介I2C(InterICBus)是由Philips公司开发的一种通用数据总......
  • 一个高精度24位ADC芯片ADS1222的使用方法及参考电路程序成都控制器定制
    前一段时间,在做单片机、PLC、电路板、控制器/箱、仪器仪表、机电设备或系统、自动化、工控、传感、数据采集、自控系统、控制系统,物联网,电子产品,软件、APP开发设计定制定做开发项目时,有要求用到24位的高精度ADC,用于对外部信号采集。经查阅,初步获得一款满足要求的芯片:ADS1222,本文......
  • STM32 控制一盏灯的亮灭
    #include"stm32f10x.h"//Deviceheaderintmain(void){ RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE); GPIO_InitTypeDefGPIO_InitStructure; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;//typedefenum//{GPIO_Mode_AIN=0x0,......
  • 操作STM32的GPIO的步骤
    1.使用RCC开启GPIO的时钟2.使用GPIO_Init函数初始化GPIO3.使用输入/输出控制GPIO口RCC在library组中的 stm32f10x_rcc.h中找:(第一个参数是选择哪个外设,第二个参数是EABLE或者DISABLE)voidRCC_AHBPeriphClockCmd(uint32_tRCC_AHBPeriph,FunctionalStateNewStat......
  • STM32CubeMX 生成的 Makefile 文件解析
    STM32CubeMX生成的Makefile文件解析Makefile的前置知识一个makefile是由一系列的规则(rule)组成的。一条完整的规则包括目标(target)、依赖(prerequistites)、方法(recipe):target...:prerequistites...recipe......依赖和方法不一定需要同......
  • 如何选择米尔基于STM32MP1系列核心板和开发板
    一款合适的处理器,是每个工程师在开发设计前期调研必须面对的难题。而如何挑选一款符合产品开发的处理器呢?今天我们就以ST公司的STM32MP1系列处理器进行分析比较。ST公司目前已经发布了两款不同类型的MPU芯片,分别是STM32MP15系列和STM32MP13系列。这两款芯片的特点十分鲜明:STM32MP......
  • STM32之ADC数模转换
    ADC-数模转换学习资料:江科大STM32入门教程ADC介绍ADC即模拟数字转换器,英文详称Analog-to-digitalconverter,可以将外部的模拟信号转换为数字信号。STM32F103系列最少都拥有2个ADC外设,最多拥有3个ADC外设。ADC的功能特性:输入电压:ADC输入范围VREF–≤VIN≤VREF......
  • STM32之步进电机
    步进电机学习资料:野火电机应用开发实战指南双极性步进电机(上):控制模式|文章|MPS(monolithicpower.cn)爱上半导体---步进电机的工作原理步进电机的介绍步进电机又称为脉冲电机,是一种将电脉冲信号转换成相应的角位移或线位移的电动机。每输入一个脉冲信号,转子就转动一......
  • STM32开发之实验总结
    一、跑马灯实验  可以利用跑马灯实验来配置程序在正常运行指示【还有也可以使用串口实验来】,我们所要配置的有;  延迟函数  GPIO初始化函数  在初始化的时候我们要确定是那个GPIO口如果你需要用他的复用功能,你也需要设置。记住stm32在默认情况下都是死亡的,所以你无论......