MB26 OpenCPU低功耗唤醒识别

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电路)。用户可以直接在中断函数中增加自己的变量来区分、识别具体哪个引脚发生的中断唤醒

图1:wakeup中断响应函数

注意:所有中断/回调函数中不能加延时或串口打印,否则系统异常复位。

图2:不同唤醒源区分

你可能感兴趣的:(MB26 OpenCPU低功耗唤醒识别)