2025年第16届蓝桥杯嵌入式竞赛学习笔记(十):ADC测量电压

1.原理图

VDD的最大值为3.3V,所以PB15测量电压值的范围为0~3.3V,然后它读取到的AD值为0~4096,所以电压测量公式为

为什么是4096,因为ADC是一个12比特的

2.CubeMX配置

将PB15引脚配置为ADC2_IN15,PB12配置为ADC1_IN11

打开ADC1的配置界面,找到IN11,选择Single ended模式

打开ADC2配置界面,将IN15-Single ended打勾

配置完成后点击右上角生成代码

3.代码部分

编写获取电压的函数

cpp 复制代码
double get_vol(ADC_HandleTypeDef *hadc)
{
	HAL_ADC_Start(hadc);
	uint32_t adc_value = HAL_ADC_GetValue(hadc);
	return 3.3 * adc_value / 4096;
}

LCD函数

cpp 复制代码
void lcd_show(void)
{
	sprintf(Temp,"R38_Vol:%.2f",get_vol(&hadc2));
	LCD_DisplayStringLine(Line2,(uint8_t *)Temp);
	
	sprintf(Temp,"R37_Vol:%.2f",get_vol(&hadc1));
	LCD_DisplayStringLine(Line4,(uint8_t *)Temp);
}

烧录完成后,扭动开发板上的R37与R38旋钮,屏幕上的电压值变化随旋钮变化。

相关推荐
创业之路&下一个五年5 小时前
自聚合树形业务:泛型基类+继承 设计思想完整总结(含核心原理与落地案例)
学习·总结
想七想八不如114085 小时前
目标检测笔记2
人工智能·笔记·目标检测
wuxinyan1235 小时前
工业级大模型学习之路023:LangChain零基础入门教程(第六篇):重排序与高级检索策略
人工智能·python·学习·langchain
nkwshuyi5 小时前
如何用 AI 帮你自动构建卡片笔记盒?
人工智能·笔记
哎呦,帅小伙哦6 小时前
Nanomsg中间件utils中部分工具学习记录
学习·中间件·nanomsg
Bechamz6 小时前
大数据开发学习Day40
大数据·学习
你怎么知道我是队长6 小时前
和校验(CheckSum)
学习
玄米乌龙茶1237 小时前
LLM成长笔记(八):Agent 智能体开发
笔记
心中有国也有家7 小时前
ascend-boost-comm:一次写完,到处复用——算子公共平台的 M×N 哲学
人工智能·经验分享·笔记·分布式·算法
星幻元宇VR7 小时前
VR消防安全行走平台打造真实火灾逃生体验
科技·学习·安全·vr·虚拟现实