|
|
@ -11,30 +11,85 @@ |
|
|
|
#include "../app/task_w600.h" |
|
|
|
#include "../bsp/bsp_wifi.h" |
|
|
|
|
|
|
|
// 外部中断初始化P3.2
|
|
|
|
void INT0_Init(void) |
|
|
|
{ |
|
|
|
D_stdIO_P3(BITN2); |
|
|
|
IT0 = 1; // 下降沿触发
|
|
|
|
EX0 = 1; // 使能INT0
|
|
|
|
} |
|
|
|
// // 外部中断初始化P3.2
|
|
|
|
// void INT0_Init(void)
|
|
|
|
// {
|
|
|
|
// D_stdIO_P3(BITN2);
|
|
|
|
// IT0 = 1; // 下降沿触发
|
|
|
|
// EX0 = 1; // 使能INT0
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
|
|
// // 进入掉电模式函数
|
|
|
|
// void Enter_PowerDown(void)
|
|
|
|
// {
|
|
|
|
// // 配置INT0到P0.2引脚
|
|
|
|
// AUXR1 |= 0x03; // INT0_S[1:0]=11 (选择P0.2)
|
|
|
|
|
|
|
|
// // 设置下降沿触发
|
|
|
|
// IT0 = 1; // TCON.0=1 (下降沿触发)
|
|
|
|
// EX0 = 1; // 使能INT0中断
|
|
|
|
|
|
|
|
// // 禁用其他唤醒源
|
|
|
|
// INTEN0 = 0x01; // 仅使能EX0,禁用其他外部中断
|
|
|
|
// INTEN1 = 0x00; // 禁用扩展外部中断
|
|
|
|
// WAKE_CLKO = 0x04; // 仅使能INT0唤醒
|
|
|
|
|
|
|
|
// // 清除中断标志
|
|
|
|
// IE0 = 0;
|
|
|
|
|
|
|
|
// // 进入掉电模式
|
|
|
|
// PCON |= 0x02; // 执行PD指令
|
|
|
|
// _nop_(); // 必要的延时
|
|
|
|
// _nop_();
|
|
|
|
// _nop_();
|
|
|
|
// _nop_();
|
|
|
|
// }
|
|
|
|
|
|
|
|
// 掉电模式函数
|
|
|
|
|
|
|
|
// // 掉电模式函数
|
|
|
|
void Enter_PowerDown(void) |
|
|
|
{ |
|
|
|
// 禁用所有唤醒源
|
|
|
|
P0IE = 0x00; |
|
|
|
P1IE = 0x00; |
|
|
|
P2IE = 0x00; |
|
|
|
P3IE = 0x00; |
|
|
|
P4IE = 0x00; |
|
|
|
P5IE = 0x00; |
|
|
|
// 只使能P3.2唤醒
|
|
|
|
// P3IE = 0x04;
|
|
|
|
|
|
|
|
PCON |= 0x02; // 执行PD指令
|
|
|
|
// 1. 配置P0.2为高阻输入模式(唤醒引脚)
|
|
|
|
P0M1 |= (1 << 2); // 设置P0.2为高阻输入
|
|
|
|
P0M0 &= ~(1 << 2); |
|
|
|
|
|
|
|
// 2.端口中断掉电唤醒使能控制位
|
|
|
|
P0WKUE = 0xFF; // 使能P0.2唤醒功能
|
|
|
|
P1WKUE = 0x00; |
|
|
|
P2WKUE = 0x00; |
|
|
|
P3WKUE = 0x00; |
|
|
|
P4WKUE = 0x00; |
|
|
|
P5WKUE = 0x00; |
|
|
|
P6WKUE = 0x00; |
|
|
|
P7WKUE = 0x00; |
|
|
|
|
|
|
|
// 3. 设置唤醒触发条件(下降沿触发)
|
|
|
|
P0IM0 = 0; |
|
|
|
P0IM1 = 0; |
|
|
|
|
|
|
|
// 4. 清除所有唤醒标志
|
|
|
|
P0INTF = 0x00; |
|
|
|
P1INTF = 0x00; |
|
|
|
P2INTF = 0x00; |
|
|
|
P3INTF = 0x00; |
|
|
|
P4INTF = 0x00; |
|
|
|
P5INTF = 0x00; |
|
|
|
P6INTF = 0x00; |
|
|
|
P7INTF = 0x00; |
|
|
|
|
|
|
|
// // 5. 禁用其他唤醒源
|
|
|
|
// WAKE_CLKO = 0x00; // 禁用所有中断唤醒
|
|
|
|
// WKTCLK = 0x00; // 禁用内部定时器唤醒
|
|
|
|
// WKCON = 0x00; // 清除唤醒配置
|
|
|
|
|
|
|
|
// 5. 进入掉电模式
|
|
|
|
PCON |= 0x02; // 执行PD指令
|
|
|
|
_nop_(); |
|
|
|
_nop_(); |
|
|
|
// _nop_();
|
|
|
|
// _nop_();
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
@ -194,9 +249,18 @@ void PowerOff_judge() |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
// 外部中断0服务函数
|
|
|
|
void INT0_Isr() interrupt 0 |
|
|
|
{ |
|
|
|
// 无需任何操作,中断仅用于唤醒MCU
|
|
|
|
// 唤醒后程序从Enter_PowerDown()后的指令继续执行
|
|
|
|
} |
|
|
|
// // 外部中断0服务函数
|
|
|
|
// void INT0_Isr() interrupt 0
|
|
|
|
// {
|
|
|
|
// // 无需任何操作,中断仅用于唤醒MCU
|
|
|
|
// // 唤醒后程序从Enter_PowerDown()后的指令继续执行
|
|
|
|
// }
|
|
|
|
|
|
|
|
// // 中断服务函数
|
|
|
|
// void INT0_ISR() interrupt 0
|
|
|
|
// {
|
|
|
|
// IE0 = 0; // 清除INT0中断标志
|
|
|
|
// // 唤醒后绿灯亮起
|
|
|
|
// L2_GREEN_LED_ON();
|
|
|
|
// }
|
|
|
|
|
|
|
|