docs: 根据1.14寸屏幕、5按键与可编程RGB新规格更新项目文档
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
# 编码实现 - 按键扫描与事件判定 (docs/60_coding/mod-key.md)
|
||||
# 编码实现 - 按键扫描与事件判定 (Docs/60_coding/mod-key.md)
|
||||
|
||||
本文件对应按键状态消抖、长按计时判定以及组合按键识别的具体编码实现细节。
|
||||
|
||||
@@ -15,11 +15,19 @@ void Key_Scan_Process(void) {
|
||||
// 1. 读取引脚状态并消抖
|
||||
static u8 key_up_state = 0xFF;
|
||||
static u8 key_down_state = 0xFF;
|
||||
static u8 key_sos_state = 0xFF;
|
||||
static u8 key_confirm_state = 0xFF;
|
||||
static u8 key_sos1_state = 0xFF;
|
||||
static u8 key_sos2_state = 0xFF;
|
||||
u8 key_sos_state;
|
||||
|
||||
key_up_state = (key_up_state << 1) | KEY_UP;
|
||||
key_down_state = (key_down_state << 1) | KEY_DOWN;
|
||||
key_sos_state = (key_sos_state << 1) | KEY_SOS;
|
||||
key_confirm_state = (key_confirm_state << 1) | KEY_CONFIRM;
|
||||
key_sos1_state = (key_sos1_state << 1) | KEY_SOS1;
|
||||
key_sos2_state = (key_sos2_state << 1) | KEY_SOS2;
|
||||
|
||||
// 双上部 SOS 键的逻辑并联(低电平有效,按位与运算相当于逻辑或)
|
||||
key_sos_state = key_sos1_state & key_sos2_state;
|
||||
|
||||
// 2. 长按与组合按键计时器累加
|
||||
if ((key_up_state & 0x07) == 0 && (key_down_state & 0x07) == 0) {
|
||||
@@ -31,7 +39,7 @@ void Key_Scan_Process(void) {
|
||||
} else {
|
||||
comb_hold = 0;
|
||||
|
||||
// 单个按键:▲ 键
|
||||
// 单个按键:▲ 键 (UP)
|
||||
if ((key_up_state & 0x07) == 0) {
|
||||
key_up_hold++;
|
||||
} else {
|
||||
@@ -41,7 +49,17 @@ void Key_Scan_Process(void) {
|
||||
key_up_hold = 0;
|
||||
}
|
||||
|
||||
// 单个按键:SOS 键
|
||||
// 单个按键:■ 确认键 (CONFIRM)
|
||||
if ((key_confirm_state & 0x07) == 0) {
|
||||
key_confirm_hold++;
|
||||
} else {
|
||||
if (key_confirm_hold > 2 && key_confirm_hold < 200) {
|
||||
key_event_buf = KEY_CONFIRM_CLICK;
|
||||
}
|
||||
key_confirm_hold = 0;
|
||||
}
|
||||
|
||||
// 单个按键:并联 SOS 键
|
||||
if ((key_sos_state & 0x07) == 0) {
|
||||
key_sos_hold++;
|
||||
if (key_sos_hold == 500) { // 5秒
|
||||
@@ -53,7 +71,7 @@ void Key_Scan_Process(void) {
|
||||
}
|
||||
key_sos_hold = 0;
|
||||
}
|
||||
// ▼ 键处理同上...
|
||||
// ▼ 键 (DOWN) 处理同上...
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user