diff --git a/App/system.c b/App/system.c index 3b2abbf..acb3131 100644 --- a/App/system.c +++ b/App/system.c @@ -382,6 +382,22 @@ void Enter_Low_Power_Sleep(void) */ void Wakeup_Restore(void) { + // 双保险 1:强行复位所有按键状态机的计数器,防止唤醒瞬间的瞬态误读累积导致长按关机 + extern volatile u16 key_up_hold; + extern volatile u16 key_down_hold; + extern volatile u16 key_confirm_hold; + extern volatile u16 key_sos_hold; + extern volatile u16 comb_hold; + + key_up_hold = 0; + key_down_hold = 0; + key_confirm_hold = 0; + key_sos_hold = 0; + comb_hold = 0; + + // 双保险 2:强保电源锁存引脚输出为高,严防瞬态抖动 + PWR_HOLD = 1; + EAXFR = 1; // 1. 立即关闭所有掉电外部中断允许与唤醒允许,防止重入 P0INTE = 0x00;