From 2b68ad78bbf439d29d052c2a977458dae52e8ebe Mon Sep 17 00:00:00 2001 From: xue <2144439972@qq.com> Date: Wed, 17 Dec 2025 17:49:28 +0800 Subject: [PATCH] =?utf8?q?=E4=BF=AE=E5=A4=8D=E5=A4=9A=E6=8C=89=E9=94=AE?= =?utf8?q?=E5=90=8C=E6=97=B6=E6=8C=89=E4=B8=8B=EF=BC=8C=E5=A4=B1=E6=95=88b?= =?utf8?q?ug?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- code/sdk/drivers/drivers/driver/button/button.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/code/sdk/drivers/drivers/driver/button/button.c b/code/sdk/drivers/drivers/driver/button/button.c index 0f6e94d8b..64005cae3 100644 --- a/code/sdk/drivers/drivers/driver/button/button.c +++ b/code/sdk/drivers/drivers/driver/button/button.c @@ -172,7 +172,11 @@ static void button_gpio_callback(pin_t pin, uintptr_t param) uapi_gpio_clear_interrupt(pin); g_gpio_key_record = pin; + #ifdef BOARD_LEINIAO + uapi_gpio_disable_interrupt(pin); + #else uapi_gpio_disable_interrupt(g_gpio_key_record); + #endif button_press_state_t press_state = button_get_press_state(pin); unsigned int irq_sts = osal_irq_lock(); if (press_state == PRESSED) { @@ -238,7 +242,17 @@ static void button_debounced_timer_callback(uint32_t data) } else { button_peripheral_api *button_api = button_port_get_api(); button_api->button_remove_veto(); + #ifdef BOARD_LEINIAO + // 修复:重新启用所有按键的中断,避免两个按键同时按下时,第一个按键的中断没有被重新启用导致失效 + // 遍历所有按键pin,重新启用中断,确保即使g_gpio_key_record被覆盖,所有按键的中断都能被正确恢复 + for (uint8_t i = 0; i < BUTTON_PIN_MAP_MAX; i++) { + if (g_button_pin_map[i].pin != PIN_NONE && g_button_pin_map[i].button != BUTTON_PWR) { + uapi_gpio_enable_interrupt(g_button_pin_map[i].pin); + } + } + #else uapi_gpio_enable_interrupt(g_gpio_key_record); + #endif } } -- 2.17.1