文章内的代码使用
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 屏幕。



















