一、配置CUBE
选择通道,以0v为参考点
参考电源选用外部基准源
输入模式选用单输入
软件触发
选择通道
添加DMA
循环模式
半个字(16位)
二、代码
/* USER CODE BEGIN PD */
#define data 1
int16_t SDADC_Value[data]={0};
float vol;
/* USER CODE END PD */
注意,定义SDADC的变量必须是int16型。因为单输入通道读到的ADC值为-32767-32767,若是输入电压为基准电压的一半以下则ADC读到的数值为负值。计算实际的电压值为
while(1)
{
HAL_SDADC_InjectedStart_DMA(&hsdadc1, (uint32_t*)SDADC_Value,data);
vol=(SDADC_Value[0]+32767)*2.5/65535;
printf("%.5f\r\n",vol);
}