当前位置: 首页 > news >正文

蓝桥杯 stm32 实现 ADC 采集数据功能 CubeMX

文章内的代码使用 HAL 库。
ADC 即 模数转换器,是指 将 连续变化的模拟信号 转换成 离散的数字信号 的器件

文章目录

  • 前言
  • 一、ADC 原理图
  • 二、CubeMX 配置
  • 三、ADC 代码讲解
  • 总结


前言


一、ADC 原理图

在这里插入图片描述
从原理图我们可以看到 STM32G431 内部集成 两个 最高位 12 位 的 ADC :。ADC1 , ADC2

对应的 可变电阻 是 R38 , R37
对应的 IO 接口是 PB12 , PB15

通过 改变 可变电阻,可以得到不同的电压值
VDD 接的电压是 0 ~ 3.3V。


二、CubeMX 配置

(1)配置 RCC (异步)
在这里插入图片描述

(2)配置 PB12 ,PB15。(显示是黄色的,不要担心,我们只是没有配置模式,第三步会配置)

在这里插入图片描述

(3)配置 PB12 的 ADC1_IN11 为 单端模式。(这时我们发现 PB12引脚编程绿色了,就选定好了)

在这里插入图片描述

同理 我们配置 PB15 的 ADC2_IN15 为 单端模式

在这里插入图片描述

(4)配置 工程模式 和 版本

在这里插入图片描述

(5)选取加入.c /.h文件(便于编写代码)

在这里插入图片描述

(6) 创建工程

在这里插入图片描述


三、ADC 代码讲解

HAL_ADC_Start : 函数来启动 ADC。
HAL_ADC_GetValue :获取采样值。

STM32G431 内部集成 两个 最高位 12 位 的 ADC,则它的分辨率为 1 / 4096。
由于板子的 VDD 接的电压是 0 ~ 3.3V。所以我们 经过 adc1_val / 4095.0f * 3.3 f 数据处理 , 可以得到需要的电压。

	uint16_t adc1_val; //ADC1 采样值
	uint16_t adc2_val; //ADC2 采样值
	
	float volt_r38, volt_r37; //ADC1,ADC2 电压值

	  //开启ADC1
	  HAL_ADC_Start(&hadc1); 
	  adc1_val = HAL_ADC_GetValue(&hadc1); // 获取ADC1 采集值
	  volt_r38 = adc1_val / 4095.0f * 3.3f; //数据梳理转换为 0 ~ 3.3 V的电压
	  
	  //开启ADC2
	  HAL_ADC_Start(&hadc2);
	  adc2_val = HAL_ADC_GetValue(&hadc2); // 获取ADC2 采集值
	  volt_r37 = adc2_val / 4095.0f * 3.3f; //数据梳理转换为 0 ~ 3.3 V的电压

总结

下一节我们讲解 LCD 屏幕。

相关文章:

  • java可以做网站前台吗/seo常用优化技巧
  • 怎样做简易局域网站点/百度推广登陆网址
  • 天猫网站平面广告/常德seo公司
  • 句容网站制作公司/中国最近新闻大事件
  • 网站建设公司创业计划书/百度公司招聘2022年最新招聘
  • 如何让百度更新网站收录/湖北权威的百度推广
  • 字符串进行前缀匹配
  • 浅谈如何做好质量保障
  • 【论文简述】FlowFormer:A Transformer Architecture for Optical Flow(ECCV 2022)
  • Android 深入系统完全讲解(21)
  • 【图灵商城】前、后端项目搭建与运行
  • 视频场景切换检测(镜头边界检测、镜头分割)
  • OSCP-Vulnhub靶机记录-Hacker_Kid-v1.0.1
  • CSS 伪元素也可以被用于反爬案例?来学习一下。26
  • 医疗电气设备安规术语理解
  • 从南丁格尔图到医学发展史
  • Delphi 11.2 安装 CnWizards 组件包
  • 基础数字(一)位运算 哈希(数组中元素出现次数)