STM32G431RBT6芯片,片上ADC是12位的,精度就是4096/3.3V。
读取 ADC 的方式有很多:
1、轮询
2、中断
3、 DMA
而轮询方式和DMA方式使用最多,在这里,我先介绍轮询的方式。
功能实现:
利用ADC单通道读取数据,并在串口打印出来;
LCD显示
硬件连接
STM32CubeMX配置
主程序
*/
int main(void)
{
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
MX_USART1_UART_Init();
MX_ADC1_Init();
LCD_Init();
LCD_Clear(Black);
LCD_SetBackColor(Black);
LCD_SetTextColor(White);
while (1)
{
char tep[20],tep1[20];
uint16_t adc=0;//ADC读取12位数据
double V=0;
HAL_ADC_Start(&hadc1);//开启转换,得到数据
adc=HAL_ADC_GetValue(&hadc1);//读取数据
V=adc*3.3/4096;
sprintf(tep,"ADC:%d V:%.2fV",adc,V);
sprintf(tep1,"ADC:%d V:%.2fV\r\n",adc,V);
HAL_UART_Transmit(&huart1,(uint8_t *)tep1,strlen(tep1),50);
LCD_DisplayStringLine(Line4,(u8*)tep);
HAL_Delay(20);
}
}