fix: 解锁恢复 SOS 物理按键电平读取逻辑,并添加 GPIO_Init 中对应 P2.6 的上拉配置

This commit is contained in:
2026-07-29 09:57:36 +08:00
parent 0a79e7a3b9
commit 2f4dd2660d
2 changed files with 7 additions and 1 deletions

View File

@@ -193,7 +193,7 @@ void Event_KeyScan_Poll(void)
u8 raw_up = !KEY_UP;
u8 raw_down = ADC_IsKeyDown(); // KEY_DOWN 通过 P0.3 ADC 通道判定 (常态 2.0V, 按下 3.7V)
u8 raw_confirm = !KEY_CONFIRM;
u8 raw_sos = 0; // 临时注释关闭 SOS 物理按键电平检测,防浮空干扰
u8 raw_sos = !KEY_SOS; // 恢复 SOS 物理按键电平检测
key_scan_timer = 0; // 重置扫描分频计数器
// 按键调试诊断:若按键 ADC 值有变化或处于高电平,串口输出真实 ADC 值

View File

@@ -51,6 +51,12 @@ void GPIO_Init(void)
MOTOR = 0;
RGB_DIN = 0; // P2.3 初始拉低,防止上电期间 WS2812B 误触发
// 配置 KEY_SOS (P2.6) 为带上拉准双向口模式以确保输入稳定
P2M1 &= ~(1 << 6);
P2M0 &= ~(1 << 6);
KEY_SOS = 1;
(*(unsigned char volatile xdata *)0xFE12) |= (1 << 6); // 使能 P2.6 的强内部上拉电阻 (P2PU = 0xFE12)
// SGM_CTRL (P1.7), LCD 控制管脚 (P1.0, P1.1, P1.4, P1.5, P1.6) 置为推挽输出
P1M1 &= ~((1 << 7) | (1 << 0) | (1 << 1) | (1 << 4) | (1 << 5) | (1 << 6));
P1M0 |= ((1 << 7) | (1 << 0) | (1 << 1) | (1 << 4) | (1 << 5) | (1 << 6));