From 118309d74b27da5d7c69fbc81f6bbc4b32d9dc36 Mon Sep 17 00:00:00 2001 From: Giovanni Di Sirio Date: Sun, 18 Nov 2018 13:38:09 +0000 Subject: Missing EXTI IRQ clearing in ISRs. git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@12435 110e8d01-0319-4d1e-a829-52ad28d1bb01 --- os/hal/ports/STM32/LLD/RTCv2/hal_rtc_lld.c | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'os/hal/ports/STM32/LLD/RTCv2') diff --git a/os/hal/ports/STM32/LLD/RTCv2/hal_rtc_lld.c b/os/hal/ports/STM32/LLD/RTCv2/hal_rtc_lld.c index 2e78f49fe..7d70cd44b 100644 --- a/os/hal/ports/STM32/LLD/RTCv2/hal_rtc_lld.c +++ b/os/hal/ports/STM32/LLD/RTCv2/hal_rtc_lld.c @@ -250,6 +250,10 @@ OSAL_IRQ_HANDLER(STM32_RTC_COMMON_HANDLER) { isr = RTCD1.rtc->ISR; RTCD1.rtc->ISR = 0U; + extiClearGroup1(EXTI_MASK1(STM32_RTC_ALARM_EXTI) | + EXTI_MASK1(STM32_RTC_TAMP_STAMP_EXTI) | + EXTI_MASK1(STM32_RTC_WKUP_EXTI)); + if (RTCD1.callback != NULL) { uint32_t cr = RTCD1-rtc->CR; uint32_t tampcr = RTCD1.rtc->TAMPCR; @@ -332,6 +336,8 @@ OSAL_IRQ_HANDLER(STM32_RTC_TAMP_STAMP_HANDLER) { isr = RTCD1.rtc->ISR; RTCD1.rtc->ISR = clear; + extiClearGroup1(EXTI_MASK1(STM32_RTC_TAMP_STAMP_EXTI)); + if (RTCD1.callback != NULL) { uint32_t cr, tampcr; @@ -381,6 +387,8 @@ OSAL_IRQ_HANDLER(STM32_RTC_WKUP_HANDLER) { isr = RTCD1.rtc->ISR; RTCD1.rtc->ISR = ~RTC_ISR_WUTF; + extiClearGroup1(EXTI_MASK1(STM32_RTC_WKUP_EXTI)); + if (RTCD1.callback != NULL) { uint32_t cr = RTCD1.rtc->CR; @@ -414,6 +422,8 @@ OSAL_IRQ_HANDLER(STM32_RTC_ALARM_HANDLER) { isr = RTCD1.rtc->ISR; RTCD1.rtc->ISR = clear; + extiClearGroup1(EXTI_MASK1(STM32_RTC_ALARM_EXTI)); + if (RTCD1.callback != NULL) { uint32_t cr = RTCD1.rtc->CR; #if defined(RTC_ISR_ALRAF) -- cgit v1.2.3