docs: 根据1.14寸屏幕、5按键与可编程RGB新规格更新项目文档

This commit is contained in:
2026-07-09 10:49:15 +08:00
parent 17a90ff7dc
commit fdf0c5ed1b
15 changed files with 174 additions and 113 deletions

View File

@@ -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) 处理同上...
}
}
```