aboutsummaryrefslogtreecommitdiffstats
path: root/os
diff options
context:
space:
mode:
authorGiovanni Di Sirio <gdisirio@gmail.com>2018-11-18 13:38:09 +0000
committerGiovanni Di Sirio <gdisirio@gmail.com>2018-11-18 13:38:09 +0000
commit118309d74b27da5d7c69fbc81f6bbc4b32d9dc36 (patch)
treeab98c9adef1810cd6f4fb31aa0276d7abe44bfa6 /os
parente7cea845fe584337ae51f26abdcd29b4c3fd6db9 (diff)
downloadChibiOS-118309d74b27da5d7c69fbc81f6bbc4b32d9dc36.tar.gz
ChibiOS-118309d74b27da5d7c69fbc81f6bbc4b32d9dc36.tar.bz2
ChibiOS-118309d74b27da5d7c69fbc81f6bbc4b32d9dc36.zip
Missing EXTI IRQ clearing in ISRs.
git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@12435 110e8d01-0319-4d1e-a829-52ad28d1bb01
Diffstat (limited to 'os')
-rw-r--r--os/hal/ports/STM32/LLD/RTCv2/hal_rtc_lld.c10
1 files changed, 10 insertions, 0 deletions
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)