【国信长天蓝桥杯】① STM32G431 ADC数据采集,ADC使用步骤

摘要

本文章基于国信长天M4开发板,讲述了ADC数据采集的应用,祝各位学生蓝桥杯比赛取得好成绩!
国信长天开发板

M4开发板 ADC部分原理图

ADC原理图
由上图可以看出,开发板上有两个可调电阻R37, R38,分别连接到PB15,和PB12。查阅芯片的数据手册,可知:

PB12  --> ADC1_IN11

PB15  --> ADC2_IN15

ADC 使用步骤

下文将以赛方提供的示例代码HAL_06_LCD为基础,为大家讲解ADC的使用步骤在这里插入图片描述

① 将 PB12PB15初始化为ADC输入模式

双击工程目录下的HAL_06_LCD.ioc,使用STM32CubeMX软件打开工程配置。

在这里插入图片描述

点击PB15PB12,分别将其设为ADC2_IN15ADC1_IN11。并且点击左边的Analog,将ADC1IN11设为IN11 Single-ended

在这里插入图片描述

并且将ADC2IN15也设为IN11 Single-ended,然后点击右上角的GENERATE CODE生成代码:

在这里插入图片描述

② ADC数据的读取

使用Keil打开刚刚生成的代码,将下列代码粘贴到main.c/* USER CODE BEGIN 0 */ /* USER CODE END 0 */之间。

uint16_t getADC1(void) // 获取PB12引脚的电压(对应R38电阻)
{
	uint16_t adc = 0;
	
	HAL_ADC_Start(&hadc1);
	adc = HAL_ADC_GetValue(&hadc1);
	
	return adc;
}

uint16_t getADC2(void) // 获取PB15引脚的电压(对应R37电阻)
{
	uint16_t adc = 0;
	
	HAL_ADC_Start(&hadc2);
	adc = HAL_ADC_GetValue(&hadc2);
	
	return adc;
}

上述代码同学们需要牢记,竞赛时可没有资料可以参考。

③ 电压数据的显示

main()while()中插入如下代码:

char buf[64] = {0};

sprintf(buf , "ADC1(R38): %.2f V", (3.3 * getADC1())/4096);
LCD_DisplayStringLine(Line8, (uint8_t *)buf);

sprintf(buf , "ADC2(R37): %.2f V", (3.3 * getADC2())/4096);
LCD_DisplayStringLine(Line9, (uint8_t *)buf);

在这里插入图片描述

④ 运行效果图

ADC电压采集

总结

ADC使用步骤总结如下:

  1. 配置PB12PB15引脚及ADC相关参数
  2. 编写ADC数据读取函数
  3. 调用 getADC1(),getADC2() 获取ADC值,并显示到屏幕上

相关知识:

  1. sprintf() 函数的作用是将数据按照printf()函数的格式输出到给定的缓冲区,文中的代码是先将数据输出到缓冲区buf,然后再把缓冲区的数据显示到LCD屏幕上。参考资料:https://www.runoob.com/cprogramming/c-function-sprintf.html
  2. "%.2f" 的格式是控制小数的位数,表示保留两位小数,同理"%.3f"保留三位小数。参考资料:https://blog.csdn.net/thanklife/article/details/20783421

如果此文章对你有帮助,欢迎点赞 关注 收藏 转发.

学习过程中遇到问题可以在评论区留言

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值