fix: 纠正低功耗休眠唤醒源,仅采用 P0.1/P0.2/P2.6 下降沿唤醒并排除 P0.3 模拟干扰,并在 main.c 本地安全清零按键计数与强保电源,彻底根除唤醒假死与断电故障

This commit is contained in:
2026-07-30 15:51:27 +08:00
parent 41bb78aa59
commit cf8a5f5796
2 changed files with 141 additions and 121 deletions

View File

@@ -328,16 +328,18 @@ void Enter_Low_Power_Sleep(void)
// 使能访问扩展特殊功能寄存器
P_SW2 |= 0x80;
// 7. 配置 Port0 中断唤醒源 (KEY_UP=P0.1, KEY_CONFIRM=P0.2, KEY_DOWN=P0.3)
P0IM1 |= 0x0E;
P0IM0 &= ~0x0E; // 下降沿触发
// 7. 配置 Port0 唤醒源 (KEY_UP=P0.1, KEY_CONFIRM=P0.2,剔除 KEY_DOWN 模拟引脚,防止低电平信号干扰)
P0IM1 &= ~0x06; // 下降沿触发 (PxIM1=0, PxIM0=0)
P0IM0 &= ~0x06;
P0INTF = 0x00; // 清除挂起的中断标志
P0INTE |= 0x0E; // 开启 P0.1, P0.2, P0.3 中断允许
P0WKUE |= 0x0E; // 使能 P0.1, P0.2, P0.3 掉电唤醒
P0INTE |= 0x06; // 开启 P0.1, P0.2 中断允许
P0WKUE |= 0x06; // 使能 P0.1, P0.2 掉电唤醒
P0PU |= 0x06; // 强内部上拉
P0IE |= 0x06; // 开启数字输入
// 8. 配置 Port2 中断唤醒源 (SOS=P2.6)
P2IM1 |= 0x40;
P2IM0 &= ~0x40; // 下降沿触发
// 8. 配置 Port2 唤醒源 (SOS=P2.6)
P2IM1 &= ~0x40; // 下降沿触发 (PxIM1=0, PxIM0=0)
P2IM0 &= ~0x40;
P2INTF = 0x00; // 清除挂起标志
P2INTE |= 0x40; // 开启 P2.6 中断允许
P2WKUE |= 0x40; // 使能 P2.6 掉电唤醒