From a270cf280b22a969581a7f1ca1ad6ba071bad299 Mon Sep 17 00:00:00 2001 From: Dave Hylands Date: Thu, 14 Feb 2019 12:38:48 -0800 Subject: [PATCH] stm32/stm32_it: Fix RTC IRQ handler to handle all EXTI IRQs on F0 MCUs. --- ports/stm32/stm32_it.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/ports/stm32/stm32_it.c b/ports/stm32/stm32_it.c index 88e7f5bfec..0f2be4c68d 100644 --- a/ports/stm32/stm32_it.c +++ b/ports/stm32/stm32_it.c @@ -509,8 +509,18 @@ void RTC_WKUP_IRQHandler(void) { void RTC_IRQHandler(void) { IRQ_ENTER(RTC_IRQn); - RTC->ISR &= ~RTC_ISR_WUTF; // clear wakeup interrupt flag - Handle_EXTI_Irq(EXTI_RTC_WAKEUP); // clear EXTI flag and execute optional callback + if (RTC->ISR & RTC_ISR_WUTF) { + RTC->ISR &= ~RTC_ISR_WUTF; // clear wakeup interrupt flag + Handle_EXTI_Irq(EXTI_RTC_WAKEUP); // clear EXTI flag and execute optional callback + } + if (RTC->ISR & RTC_ISR_ALRAF) { + RTC->ISR &= ~RTC_ISR_ALRAF; // clear Alarm A flag + Handle_EXTI_Irq(EXTI_RTC_ALARM); // clear EXTI flag and execute optional callback + } + if (RTC->ISR & RTC_ISR_TSF) { + RTC->ISR &= ~RTC_ISR_TSF; // clear timestamp flag + Handle_EXTI_Irq(EXTI_RTC_TIMESTAMP); // clear EXTI flag and execute optional callback + } IRQ_EXIT(RTC_IRQn); }