From 60a6b02b165e6b1d5843169478d784d73e0184b8 Mon Sep 17 00:00:00 2001 From: lhye200 Date: Sat, 2 Aug 2025 12:12:14 +0000 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20button/button.c?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- button/button.c | 40 +++++++++++++++++++++++++++++++--------- 1 file changed, 31 insertions(+), 9 deletions(-) diff --git a/button/button.c b/button/button.c index 7ee7520..59ebf21 100644 --- a/button/button.c +++ b/button/button.c @@ -33,20 +33,28 @@ void Button_Scan() } else // 按键松开 { + if(button_last_time[i] >= BUTTON_SHORT_PRESS_TIME && button_last_time[i] < BUTTON_LONG_PRESS_TIME) // 短按 + { + if(button_state[i] != BUTTON_SHORT_PRESS_GOT) + { + button_state[i] = BUTTON_SHORT_PRESS; // 设置为短按状态 + } + } + else // 未按下 + { + if(button_state[i] == BUTTON_LONG_PRESS) + { + button_state[i] = BUTTON_RELEASE; + } + // button_state[i] = BUTTON_RELEASE; // 设置为未按下状态 + } button_last_time[i] = 0; // 持续按下时间清零 } if(button_last_time[i] >= BUTTON_LONG_PRESS_TIME) // 长按 { button_state[i] = BUTTON_LONG_PRESS; // 设置为长按状态 } - else if(button_last_time[i] >= BUTTON_SHORT_PRESS_TIME) // 短按 - { - button_state[i] = BUTTON_SHORT_PRESS; // 设置为短按状态 - } - else // 未按下 - { - button_state[i] = BUTTON_RELEASE; // 设置为未按下状态 - } + } } @@ -56,7 +64,21 @@ uint8 Button_Get_State(uint8 button_num) { return -1; // 返回错误 } - return button_state[button_num]; // 返回按键状态 + uint8 tmp_sta = button_state[button_num]; + if(button_state[button_num] == BUTTON_SHORT_PRESS) + { + button_state[button_num] = BUTTON_SHORT_PRESS_GOT; + } + return tmp_sta; // 返回按键状态 } +void Button_Reset(uint8 button_num) +{ + if(button_num >= BUTTON_PIN_NUM) // 按键编号越界 + { + return ; // 返回错误 + } + button_state[button_num] = BUTTON_RELEASE; // 重置按键状态为未按下 +} +