软件触发采集三个通道的AD数据,代码如下:
void read_ADC_voltage()
{
uint8_t i;
HAL_ADC_Start(&hadc); //启动ADC转换
for(i = 0; i < 3; i++)
{
HAL_ADC_PollForConversion(&hadc, 50); //等待转换完成,50为最大等待时间,单位为ms
if(HAL_IS_BIT_SET(HAL_ADC_GetState(&hadc), HAL_ADC_STATE_REG_EOC))
{
AD_val[i] = HAL_ADC_GetValue(&hadc); //获取AD值
}
}
HAL_ADC_Stop(&hadc);
}
测试过程中发现采集到的数据总是不正确,于是将ADC的Discontinuous Conversion Mode选项配置为Enabled,问题解决。