测试平台:STM32G431RBT6
ADC即模拟数字转换器,ADC英文全称(Analog-to-digital converter), 是一种用于将模拟电压的连续信号转换为离散的数字信号。 就比如我们可以将我们生活中的温度、压力、声音这样的模拟信号通过ADC转化为我们可以通过单片机处理的数字信号。
目录
电路原理
STM32G431内部集成2个最高12位的ADC(ADC1,ADC2)
12位的ADC即 0 ~ 2^12 - 1 = 0 ~ 4095
实现原理:读到的值 X / 4096 * 3.3V(板载电压)
R37与R38为旋转电位器,通过旋转电阻从而将电阻分压值从GND到VDD变化
J11与J12为跳帽
CubeMX配置
将两路ADC设置为单端模式
Differential:差分模式:对读取电压求差
Single-ended:单端模式:直接读取所接的一个电压
keil工程
打开keil后若编译报错
打开
再次打开
再前往
看到
将ADC定义注释取消(同理,若使用其他功能取消注释即可)
在系统时钟初始化中
将模版中
分别复制到keil工程adc.c中
将adc.c中初始化在主函数中声明
代码
全局变量
u16 ADC1_Value;
u16 ADC2_Value;
float vol_rot38;
float vol_rot37;
循环中:
while (1)
{
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
KEY_Process();
HAL_ADC_Start (&hadc1);
ADC1_Value = HAL_ADC_GetValue (&hadc1); //1
vol_rot38 = ADC1_Value/4095.0f*3.3f; //2
HAL_ADC_Start (&hadc2);
ADC2_Value = HAL_ADC_GetValue (&hadc2);
vol_rot37= ADC2_Value/4095.0f*3.3f;
}
/* USER CODE END 3 */
}
HAL_ADC_Start(); 打开ADC函数
HAL_ADC_GetValue(); 读取ADC函数
hadc1定义在adc.h中为ADC处理函数
循环中1:读取ADC的数值
循环中2:读取ADC的电压值
开启仿真调试,在监视窗口中通过旋转电位器可以检测ADC数值的变化