diff --git a/src/main/drivers/exti.c b/src/main/drivers/exti.c index f17007b318..7abf7928ca 100644 --- a/src/main/drivers/exti.c +++ b/src/main/drivers/exti.c @@ -131,6 +131,8 @@ void EXTIConfig(IO_t io, extiCallbackRec_t *cb, int irqPriority, ioConfig_t conf extiChannelRec_t *rec = &extiChannelRecs[chIdx]; rec->handler = cb; + EXTIDisable(io); + #if defined(STM32F7) || defined(STM32H7) || defined(STM32G4) GPIO_InitTypeDef init = { .Pin = IO_Pin(io), @@ -140,7 +142,6 @@ void EXTIConfig(IO_t io, extiCallbackRec_t *cb, int irqPriority, ioConfig_t conf }; HAL_GPIO_Init(IO_GPIO(io), &init); - if (extiGroupPriority[group] > irqPriority) { extiGroupPriority[group] = irqPriority; HAL_NVIC_SetPriority(extiGroupIRQn[group], NVIC_PRIORITY_BASE(irqPriority), NVIC_PRIORITY_SUB(irqPriority)); @@ -158,11 +159,8 @@ void EXTIConfig(IO_t io, extiCallbackRec_t *cb, int irqPriority, ioConfig_t conf #else # warning "Unknown CPU" #endif - uint32_t extiLine = IO_EXTI_Line(io); - EXTI_ClearITPendingBit(extiLine); - EXTI_InitTypeDef EXTIInit; EXTIInit.EXTI_Line = extiLine; EXTIInit.EXTI_Mode = EXTI_Mode_Interrupt;