mirror of
https://github.com/apache/nuttx.git
synced 2026-08-12 16:06:51 +00:00
The shared port ISR clears interrupt status with GPIO_INTStatusClearEdge(), which only clears edge latches. For a level-triggered pin the status stays asserted as long as the level is active, so the ISR re-enters forever once the level fires -- the system hangs before the application can even service the event. Remember at configure time whether a pin is level-triggered, and in the ISR mask such a pin (GPIO_INTConfig DISABLE) before invoking the callback. The application re-enables it via go_enable() after servicing. Edge pins are left unmasked, so their behaviour is unchanged. This fixes a hang reproducible on RTL8721Dx and RTL8721F when a level-high/level-low interrupt pin is used. Signed-off-by: dechao_gong <dechao_gong@realsil.com.cn> Assisted-by: Claude <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| arm | ||
| arm64 | ||
| avr | ||
| ceva | ||
| dummy | ||
| hc | ||
| mips | ||
| misoc | ||
| or1k | ||
| renesas | ||
| risc-v | ||
| sim | ||
| sparc | ||
| tricore | ||
| x86 | ||
| x86_64 | ||
| xtensa | ||
| z16 | ||
| z80 | ||
| CMakeLists.txt | ||
| Kconfig | ||