请教,用HAL库定时采集ADC数据的标准方法是怎样的?谢谢

2019-07-20 09:54发布

比如我想1秒采集一次ADC数据,我试过的方法是 在TIM的更新中断中加了GetADC(),这个GetADC()用的是阿波罗例程72里的代码。
问题是 执行程序时只读了一次ADC就死循环在while(!(__HAL_ADC_GET_FLAG(hadc, ADC_FLAG_EOC))),ADC_FLAG_EOC一直是0。


请教大家,用HAL库定时采集ADC数据的标准方法是怎样的?谢谢!

相关代码:
//读取ADC值
uint16_t GetADC()
{
  HAL_ADC_Start(&hadc1);
  HAL_ADC_PollForConversion(&hadc1,100);
  return HAL_ADC_GetValue(&hadc1);
}

//定时器更新中断
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{          
        printf("%d ",GetADC());                //返回adc值       
}


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。