ADC Interrupt Handler Handle interrupt events on the ADC peripheral.
291 ADC_HandleTypeDef *hadc = dev->
adc;
295 assert_param(IS_FUNCTIONAL_STATE(hadc->Init.ContinuousConvMode));
296 assert_param(IS_ADC_EOC_SELECTION(hadc->Init.EOCSelection));
299 if (__HAL_ADC_GET_FLAG(hadc, ADC_FLAG_AWD) &&
300 __HAL_ADC_GET_IT_SOURCE(hadc, ADC_IT_AWD)) {
310 if (__HAL_ADC_GET_FLAG(hadc, ADC_FLAG_EOC) &&
311 __HAL_ADC_GET_IT_SOURCE(hadc, ADC_IT_EOC)) {
314 if (HAL_IS_BIT_CLR(hadc->State, HAL_ADC_STATE_ERROR_INTERNAL)) {
317 SET_BIT(hadc->State, HAL_ADC_STATE_REG_EOC);
321 (adc_chan++)->meas = hadc->Instance->DR;
324 __HAL_ADC_CLEAR_FLAG(hadc, ADC_FLAG_EOC);
328 if (__HAL_ADC_GET_FLAG(hadc, ADC_FLAG_EOS) &&
329 __HAL_ADC_GET_IT_SOURCE(hadc, ADC_IT_EOS)) {
332 adc_chan = &adc_tab[0];
335 __HAL_ADC_CLEAR_FLAG(hadc, ADC_FLAG_EOS);
339 if (__HAL_ADC_GET_FLAG(hadc, ADC_FLAG_OVR) &&
340 __HAL_ADC_GET_IT_SOURCE(hadc, ADC_IT_OVR)) {
347 if ((hadc->Init.Overrun == ADC_OVR_DATA_PRESERVED) ||
348 HAL_IS_BIT_SET(hadc->Instance->CFGR1, ADC_CFGR1_DMAEN)) {
350 hadc->ErrorCode |= HAL_ADC_ERROR_OVR;
353 __HAL_ADC_CLEAR_FLAG(hadc, ADC_FLAG_OVR);
356 HAL_ADC_ErrorCallback(hadc);
360 __HAL_ADC_CLEAR_FLAG(hadc, ADC_FLAG_OVR);
#define assert_param(expr)
Uncomment the line below to expanse the "assert_param" macro in the HAL drivers code.
Definition: stm32f0xx_hal_conf.h:304
ADC_HandleTypeDef * adc
Definition: sd_adc.h:94