除了掉电唤醒定时器,其他唤醒都需要通过中断,所以可以在中断里面加标志来判断唤醒源,例如:
- WakeUpSource = 0;
- PrintString1("MCU进入休眠状态!\r\n");
-
- PD = 1; //Sleep
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- _nop_();
- _nop_();
-
- if(WakeUpSource == 1) PrintString1("外中断INT0唤醒 ");
- if(WakeUpSource == 2) PrintString1("外中断INT1唤醒 ");
- if(WakeUpSource == 3) PrintString1("外中断INT2唤醒 ");
- if(WakeUpSource == 4) PrintString1("外中断INT3唤醒 ");
- if(WakeUpSource == 5) PrintString1("外中断INT4唤醒 ");
复制代码
- u8 WakeUpSource;
-
- //========================================================================
- // 函数: INT0_ISR_Handler
- // 描述: INT0中断函数.
- // 参数: none.
- // 返回: none.
- // 版本: V1.0, 2020-09-23
- //========================================================================
- void INT0_ISR_Handler (void) interrupt INT0_VECTOR //进中断时已经清除标志
- {
- // TODO: 在此处添加用户代码
- // P00 = ~P00;
- WakeUpSource = 1;
- }
-
- //========================================================================
- // 函数: INT1_ISR_Handler
- // 描述: INT1中断函数.
- // 参数: none.
- // 返回: none.
- // 版本: V1.0, 2020-09-23
- //========================================================================
- void INT1_ISR_Handler (void) interrupt INT1_VECTOR //进中断时已经清除标志
- {
- // TODO: 在此处添加用户代码
- // P01 = ~P01;
- WakeUpSource = 2;
- }
-
- //========================================================================
- // 函数: INT2_ISR_Handler
- // 描述: INT2中断函数.
- // 参数: none.
- // 返回: none.
- // 版本: V1.0, 2020-09-23
- //========================================================================
- void INT2_ISR_Handler (void) interrupt INT2_VECTOR //进中断时已经清除标志
- {
- // TODO: 在此处添加用户代码
- // P02 = ~P02;
- WakeUpSource = 3;
- }
-
- //========================================================================
- // 函数: INT3_ISR_Handler
- // 描述: INT3中断函数.
- // 参数: none.
- // 返回: none.
- // 版本: V1.0, 2020-09-23
- //========================================================================
- void INT3_ISR_Handler (void) interrupt INT3_VECTOR //进中断时已经清除标志
- {
- // TODO: 在此处添加用户代码
- // P03 = ~P03;
- WakeUpSource = 4;
- }
-
- //========================================================================
- // 函数: INT4_ISR_Handler
- // 描述: INT4中断函数.
- // 参数: none.
- // 返回: none.
- // 版本: V1.0, 2020-09-23
- //========================================================================
- void INT4_ISR_Handler (void) interrupt INT4_VECTOR //进中断时已经清除标志
- {
- // TODO: 在此处添加用户代码
- // P04 = ~P04;
- WakeUpSource = 5;
- }
复制代码
|