diff --git a/arch/arm/src/common/stm32/stm32_exti_gpio_m0_v1.c b/arch/arm/src/common/stm32/stm32_exti_gpio_m0_v1.c index 00b9158085c..b143d31dc9e 100644 --- a/arch/arm/src/common/stm32/stm32_exti_gpio_m0_v1.c +++ b/arch/arm/src/common/stm32/stm32_exti_gpio_m0_v1.c @@ -221,6 +221,7 @@ int stm32_gpiosetevent(uint32_t pinset, bool risingedge, bool fallingedge, xcpt_t handler; int nshared; int i; + int ret; /* Select the interrupt handler for this EXTI pin */ @@ -274,6 +275,16 @@ int stm32_gpiosetevent(uint32_t pinset, bool risingedge, bool fallingedge, if (i == nshared) { + /* remove any leftover callback */ + + ret = irq_detach(irq); + if (ret < 0) + { + return ret; + } + + /* disable the interrupt */ + up_disable_irq(irq); } }