Commit 1ba516f4 authored by Krzysztof Blazewicz's avatar Krzysztof Blazewicz Committed by Damien George
Browse files

stmhal/extint: Force 0 to 1 transition on swint().

If a user tries to call `swint()` while interrupt is disabled the flag in
SWIER is set but the interrupt is not triggered and therefore the SWIER bit
is not cleared.  When the interrupt is again enabled the next call to
`swint()` won't trigger the IRQ because a 0 to 1 transition will not occur.
parent 06a11943
......@@ -251,10 +251,13 @@ void extint_swint(uint line) {
if (line >= EXTI_NUM_VECTORS) {
return;
}
// we need 0 to 1 transition to trigger the interrupt
#if defined(MCU_SERIES_L4)
EXTI->SWIER1 = (1 << line);
EXTI->SWIER1 &= ~(1 << line);
EXTI->SWIER1 |= (1 << line);
#else
EXTI->SWIER = (1 << line);
EXTI->SWIER &= ~(1 << line);
EXTI->SWIER |= (1 << line);
#endif
}
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment