From 7c12ea741632f9d19ff90c11caf64abcd4d5af48 Mon Sep 17 00:00:00 2001 From: Francisco Molina Date: Tue, 19 Jan 2021 13:33:17 +0100 Subject: [PATCH] cpu/stm32/rtc: add unlock/lock to rtc_clear_alarm --- cpu/stm32/periph/rtc_all.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/cpu/stm32/periph/rtc_all.c b/cpu/stm32/periph/rtc_all.c index b7f5eb21d4..148fb4046c 100644 --- a/cpu/stm32/periph/rtc_all.c +++ b/cpu/stm32/periph/rtc_all.c @@ -304,11 +304,11 @@ int rtc_set_alarm(struct tm *time, rtc_alarm_cb_t cb, void *arg) /* normalize input */ rtc_tm_normalize(time); - rtc_unlock(); - /* disable existing alarm (if enabled) */ rtc_clear_alarm(); + rtc_unlock(); + /* save callback and argument */ isr_ctx.cb = cb; isr_ctx.arg = arg; @@ -345,11 +345,15 @@ int rtc_get_alarm(struct tm *time) void rtc_clear_alarm(void) { + rtc_unlock(); + RTC->CR &= ~(RTC_CR_ALRAE | RTC_CR_ALRAIE); while (!(RTC_REG_ISR & RTC_ISR_ALRAWF)) {} isr_ctx.cb = NULL; isr_ctx.arg = NULL; + + rtc_lock(); } void rtc_poweron(void)