docs: restructure framework, extract app execution module, group event collection & align GPIOs
This commit is contained in:
@@ -9,14 +9,14 @@
|
||||
## 2. 关键代码片段与逻辑实现
|
||||
|
||||
### 2.1 供电引脚初始化
|
||||
系统初始化时,配置 `SHUT`(控制 SGM3833 供电的引脚 `P2.7`)为推挽输出,并拉高以打开屏幕供电:
|
||||
系统初始化时,配置 `SHUT`(控制 SGM3833 供电的引脚 `P2.2`)为推挽输出,并拉高以开启屏幕供电:
|
||||
```c
|
||||
sbit SHUT = P2^7; // Pin 28
|
||||
sbit SHUT = P2^2; // Pin 23
|
||||
|
||||
void Power_Init(void) {
|
||||
// P2.7 (SHUT) 配置为推挽输出
|
||||
P2M1 &= ~(1 << 7);
|
||||
P2M0 |= (1 << 7);
|
||||
// P2.2 (SHUT) 配置为推挽输出
|
||||
P2M1 &= ~(1 << 2);
|
||||
P2M0 |= (1 << 2);
|
||||
|
||||
// 拉高引脚,开启 SGM3833 负压供电
|
||||
SHUT = 1;
|
||||
@@ -33,12 +33,12 @@ void Enter_Low_Power_Sleep(void) {
|
||||
// 2. 切断 SGM3833 电源,停止输出负压
|
||||
SHUT = 0;
|
||||
|
||||
// 3. 配置引脚中断 (P2.0, P2.3, P3.6, P3.7) 允许唤醒
|
||||
// 允许 P2 / P3 端口中断以供按键唤醒
|
||||
P2IM1 &= ~0x09; P2IM0 &= ~0x09; P2INTE |= 0x09; // P2.0 (UP), P2.3 (SOS)
|
||||
P3IM1 &= ~0xC0; P3IM0 &= ~0xC0; P3INTE |= 0xC0; // P3.6 (DOWN), P3.7 (CONFIRM)
|
||||
// 3. 配置引脚中断 (P0.1, P0.2, P0.3, P2.6) 允许唤醒
|
||||
// 允许 P0 / P2 端口中断以供按键唤醒
|
||||
P0IM1 &= ~0x0E; P0IM0 &= ~0x0E; P0INTE |= 0x0E; // P0.1 (UP), P0.2 (CONFIRM), P0.3 (DOWN)
|
||||
P2IM1 &= ~0x40; P2IM0 &= ~0x40; P2INTE |= 0x40; // P2.6 (SOS)
|
||||
|
||||
// 4. 配置射频接收脚 P0.0 (RF_RX_DATA) 为 INT2/外部中断 2 唤醒
|
||||
// 4. 配置射频接收脚 P2.1 (RF_RX_DATA) 为 INT2/外部中断 2 唤醒
|
||||
EX2 = 1; // 使能外部中断2
|
||||
|
||||
// 5. 写入 PCON.1 使单片机进入 Power-Down 深度睡眠状态
|
||||
@@ -51,9 +51,9 @@ void Enter_Low_Power_Sleep(void) {
|
||||
### 2.3 中断唤醒与恢复 (Wakeup_Restore)
|
||||
当产生按键或射频中断后,单片机被唤醒,首先执行外部中断 ISR,退出低功耗并重新使能 OLED:
|
||||
```c
|
||||
// 外部中断服务子程序 (以按键 P3 端口中断为例)
|
||||
void Port3_Isr(void) interrupt 38 {
|
||||
P3INTF = 0x00; // 清除 P3 中断标志
|
||||
// 外部中断服务子程序 (以按键 P0 端口中断为例)
|
||||
void Port0_Isr(void) interrupt 37 {
|
||||
P0INTF = 0x00; // 清除 P0 中断标志
|
||||
Wakeup_Restore();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user