蓝桥杯STM32G431RBT6学习——ADC

前言

ADC即模数转换,也是蓝桥杯的常考考点,STM32G431RBT6具有两个12位的ADC,国信长天开发板上通过PB12与PB15连接到精可调电阻上,其接线如下:
在这里插入图片描述
其中PB12为ADC1的通道11,PB15为ADC2的通道15。

STM32CubeMX配置

在这里插入图片描述
将对应引脚配置为对应的ADC通道后,使能其信号输入,配置就算完成了。由于并不使用DMA及看门狗控制,因此下方配置可以省略,ADC默认为12位精度数据右对齐。

Keil代码编写

ADC相关ADI:
ADC启动函数:

HAL_StatusTypeDef HAL_ADC_Start(ADC_HandleTypeDef *hadc)

参数:ADC句柄,由CubeMX生成的adc.c中定义

获取ADC采集值:

uint32_t HAL_ADC_GetValue(ADC_HandleTypeDef *hadc)

参数:ADC句柄,由CubeMX生成的adc.c中定义

代码编写:
得益于使用HAL库的好处,关于ADC的初始化及配置步骤全部由CubeMX生成了,剩下的就只有读取采集到的数值步骤了,代码如下:

//主函数部分:
  while (1)
  {
    /* USER CODE END WHILE */
	char txt1[20];
	char txt2[20];
	sprintf(txt1,"  R37-ADC = %.2lf",adcGetValue(&hadc2));
	sprintf(txt2,"  R38-ADC = %.2lf",adcGetValue(&hadc1));
	LCD_DisplayStringLine(Line4,(u8*)txt1);
	LCD_DisplayStringLine(Line5,(u8*)txt2);
	HAL_Delay(333);
    /* USER CODE BEGIN 3 */
  }


//函数功能:  获取ADC采集到的值
//函数参数:  ADC句柄 
//函数返回值:采集到的ADC值
double adcGetValue(ADC_HandleTypeDef *hadc)
{
	double adcValue;
	HAL_ADC_Start(hadc);
	adcValue = HAL_ADC_GetValue(hadc);
	//12位精度,/4096获取其占比后*3.3(最大电压)得到实际电压
	return (adcValue/4096*3.3);
}
Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐