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.
This commit is contained in:
parent
06a1194300
commit
1ba516f475
@ -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
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user