EC616系列模组OpenCPU的低功耗参考MB26低功耗,模组进入低功耗唤醒源有复位(重新上电),wakeup引脚(细分为wakeup和wakeup_in),RTC。有时候用户需要知道设备是如何唤醒的,如门磁设备分为3个唤醒源(开关、防拆、RTC心跳),这时就需要通过不同方式识别对应的唤醒源。
一、lierdaEC_slpManGetWakeupSrc()
设备唤醒之后,可通过函数lierdaEC_slpManGetWakeupSrc()获取对应的唤醒源
WAKEUP_FROM_POR
WAKEUP_FROM_RTC
WAKEUP_FROM_PAD
这里给出简单的程序识别流程,客户在各个判断逻辑加入自己的程序即可。该函数在main()函数入口或者task的入口处调用即可。
void APP_Task_WakeupSrc_Print(){
slpManWakeSrc_e slpManWakeSrc=0; // 唤醒源打印
slpManWakeSrc=lierdaEC_slpManGetWakeupSrc();
switch(slpManWakeSrc){
case WAKEUP_FROM_POR:
ECOMM_TRACE(UNILOG_PLA_APP, lierdaEC_wakeupSrc_1, P_INFO, 0, "WAKEUP_FROM_POR");
break;
case WAKEUP_FROM_RTC:
ECOMM_TRACE(UNILOG_PLA_APP, lierdaEC_wakeupSrc_2, P_INFO, 0, "WAKEUP_FROM_RTC");
break;
case WAKEUP_FROM_PAD:
ECOMM_TRACE(UNILOG_PLA_APP, lierdaEC_wakeupSrc_3, P_INFO, 0, "WAKEUP_FROM_PAD");
break;
default:
ECOMM_TRACE(UNILOG_PLA_APP, lierdaEC_wakeupSrc_4, P_INFO, 0, "WAKEUP_FROM_unknownState");
break;
}
}
二、外部中断唤醒源
模组外部中断唤醒源有2个wakeup引脚和wakeup_in引脚,其中wakeup对应PAD1,唤醒时间10nS以上;wakeup_in对应PAD3,唤醒时间1mS以上(内部增加了RC电路)。用户可以直接在中断函数中增加自己的变量来区分、识别具体哪个引脚发生的中断唤醒
注意:所有中断/回调函数中不能加延时或串口打印,否则系统异常复位。