summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDave Hylands <dhylands@gmail.com>2019-02-14 12:38:48 -0800
committerDamien George <damien.p.george@gmail.com>2019-02-19 15:17:47 +1100
commita270cf280b22a969581a7f1ca1ad6ba071bad299 (patch)
treeedee01f7c7b15c3dc897560aca4a22895a773d20
parent67b326d97e6363906b9e8dca8b86130bece69d3a (diff)
stm32/stm32_it: Fix RTC IRQ handler to handle all EXTI IRQs on F0 MCUs.
-rw-r--r--ports/stm32/stm32_it.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/ports/stm32/stm32_it.c b/ports/stm32/stm32_it.c
index 88e7f5bfe..0f2be4c68 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);
}