From 0b414ff64977c8b06ddd90fd80813d94bcd03110 Mon Sep 17 00:00:00 2001 From: Karl Palsson Date: Thu, 27 Oct 2022 21:56:50 +0000 Subject: [PATCH] stm32g0: adc: only clear desired flags in ADC_ISR Verified against RM0444rev5. Fixes: https://github.com/libopencm3/libopencm3/issues/1443 Signed-off-by: Karl Palsson --- lib/stm32/g0/adc.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/stm32/g0/adc.c b/lib/stm32/g0/adc.c index 7d4d1c93..73fb0dbf 100644 --- a/lib/stm32/g0/adc.c +++ b/lib/stm32/g0/adc.c @@ -160,24 +160,24 @@ void adc_set_regular_sequence(uint32_t adc, uint8_t length, uint8_t channel[]) /* Setup scandir, if needed, waiting for configuration be applied.. */ if (stepdn && (!(ADC_CFGR1(adc) & ADC_CFGR1_SCANDIR))) { - ADC_ISR(adc) &= ~ADC_ISR_CCRDY; + ADC_ISR(adc) = ADC_ISR_CCRDY; ADC_CFGR1(adc) |= ADC_CFGR1_SCANDIR; while (!(ADC_ISR(adc) & ADC_ISR_CCRDY)); } else if (stepup && ((ADC_CFGR1(adc) & ADC_CFGR1_SCANDIR))) { - ADC_ISR(adc) &= ~ADC_ISR_CCRDY; + ADC_ISR(adc) = ADC_ISR_CCRDY; ADC_CFGR1(adc) &= ~ADC_CFGR1_SCANDIR; while (!(ADC_ISR(adc) & ADC_ISR_CCRDY)); } /* Setup ADC in simple, not configurable, mode, if needed. */ if ((ADC_CFGR1(adc) & ADC_CFGR1_CHSELRMOD)) { - ADC_ISR(adc) &= ~ADC_ISR_CCRDY; + ADC_ISR(adc) = ADC_ISR_CCRDY; ADC_CFGR1(adc) &= ~ADC_CFGR1_CHSELRMOD; while (!(ADC_ISR(adc) & ADC_ISR_CCRDY)); } if (ADC_CHSELR(adc) != reg32) { - ADC_ISR(adc) &= ~ADC_ISR_CCRDY; + ADC_ISR(adc) = ADC_ISR_CCRDY; ADC_CHSELR(adc) = reg32; while (!(ADC_ISR(adc) & ADC_ISR_CCRDY)); }