HAL库ADC

1.硬件问题

STM32的ADC、DAC的供电电源是VDDA,直接把他连到VDD上就行了,千万别加电阻

ADC的测量范围是:0~VDDA,如果加了电阻,则VDDA会小于3.3V,那么ADC的量程也将缩小。

2.软件问题

ADC和串口一样,每次读取前都得开启一次,不然就只能读一次

1
2
3
4
5
6
7
8
9
10
11
12
13
uint16_t get_adc(void)
{
//开启ADC1
HAL_ADC_Start(&hadc1);
//等待ADC转换完成,超时为100ms
HAL_ADC_PollForConversion(&hadc1,100);
//判断ADC是否转换成功
if(HAL_IS_BIT_SET(HAL_ADC_GetState(&hadc1),HAL_ADC_STATE_REG_EOC))
{
return HAL_ADC_GetValue(&hadc1);
}
return 0;
}

返回的值用16位来接收就行了

在使用ADC之前,首先应该关注该单片机的ADC的位数进而选择合适的数据类型储存,以及该单片机挂载在哪条时钟总线上,它的时钟频率是多少。

参考链接:

【CubeIDE】STM32 HAL库史上最详细教程(二):单/多通道ADC读取电压_Nack’BT的博客-CSDN博客_hal 库教程