本文参考了CSDN博主安迪西ADC模数转换的文章代码,作对正弦曲线(or比如温度压强等)的模数转换(0-3.3转0-4096)由于proteus virtual terminal难以输出单精度或双精度实数,故直接输出0-4096,若要转为电压可以0-4096*3.3/4096即可
以下代码截自CSDN博主「安迪西」
while (1){
HAL_ADC_Start(&hadc1); //启动ADC转换
HAL_ADC_PollForConversion(&hadc1,10); //等待转换完成,10ms表示超时时间
AD_Value = HAL_ADC_GetValue(&hadc1); //读取ADC转换数据(12位数据)
printf("ADC1_IN1 ADC value: %d\r\n",AD_Value);
Vol_Value = AD_Value*(3.3/4096); //AD值乘以分辨率即为电压值
printf("ADC1_IN1 VOL value: %.2fV\r\n",Vol_Value);
HAL_GPIO_TogglePin(GPIOC,GPIO_PIN_0);
HAL_Delay(1000);
}