蓝桥杯电子类嵌入式(STM32G431)备赛学习记录(五)——模数转换ADC

文章介绍了如何在STM32微控制器中使用ADC进行模拟信号到数字信号的转换。通过配置CubeMX设置ADC通道,然后在C代码中调用HAL库函数启动ADC转换并获取电压值。在主函数中显示电位器输出的模拟电压读数。
摘要由CSDN通过智能技术生成

05、模拟数字信号转换器ADC

ADC即模拟数字转换器(英语:Analog-to-digital converter)是用于将模拟形式的连续信号转换为数字形式的离散信号的一类设备。一个模拟数字转换器可以提供信号用于测量。与之相对的设备成为数字模拟转换器,也就是DAC,它是把数字量转变成模拟的器件DAC。

上一篇博客的例程复制一份命名为Ag_04。在bsp文件夹中新建两个文件分别为badc.c和badc.h。打开.ioc文件,根据手册配置PB15为ADC_2IN15,PB12为ADC1_IN11。然后配置ADC1的第11个输入通道为Single_ended。同理,ADC2如是。
在这里插入图片描述
在这里插入图片描述
配置完成后,点击生成代码。打开工程文件,将前面新建的badc.c添加到工程,在里面实现功能:检测开发板电位器输出的模拟电压信号。
badc.c:

#include "badc.h"

double Get_Adc(ADC_HandleTypeDef * PIN) //定义计算电压值的函数
{
	uint adc;  //定义一个变量来储存adc值
	HAL_ADC_Start(PIN);      //库函数开启ADC转换
	adc = HAL_ADC_GetValue(PIN);		//库函数获取获取ADC转换的值
	return adc*3.3/4096;      //计算得出电压值,3.3是电源电压,4096是2的12次,12是cube里ADC设置的精度
}

badc.h:

#ifndef _BADC_H
#define _BADC_H

#include "main.h"
double Get_Adc(ADC_HandleTypeDef * PIN);
#endif

在main.c的显示函数中加入:

sprintf(dis_2,"     V:%.2f",Get_Adc(&hadc1));
LCD_DisplayStringLine(Line8,(unsigned char *)dis_2);
sprintf(dis_2,"     V:%.2f",Get_Adc(&hadc2));
LCD_DisplayStringLine(Line9,(unsigned char *)dis_2);

编译无误,下载完成!

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值