唤醒系统 ####################### PMU 结构独立于系统,可以在系统睡眠或者软关机的情况下继续工作,提供多种唤醒功耗,所有PMU唤醒信号通过P33传给主系统。 .. image:: file/wkup.png :alt: "运行与低功耗“ :align: center .. centered:: 运行与低功耗 .. .. figure:: file/wkup.svg :width: 600 :align: center :alt: 运行与低功耗 **rtc,有以下唤醒源(本芯片没有硬件rtc):** .. code-block:: c enum { R3_WKUP_SRC_ALM = 0, //闹钟唤醒 R3_WKUP_SRC_PORT = 3, //rtc io唤醒 R3_WKUP_SRC_256HZ, //频率256HZ唤醒 R3_WKUP_SRC_64HZ, //频率64HZ唤醒 R3_WKUP_SRC_2HZ, //频率2HZ唤醒 R3_WKUP_SRC_1HZ, //频率1HZ唤醒 }; **p33有以下唤醒源:** .. code-block:: c enum { P3_WKUP_SRC_PCNT_OVF = 0, //pcnt计数溢出 P3_WKUP_SRC_PORT_EDGE, //普通io唤醒 P3_WKUP_SRC_ANA_EDGE, //模拟信号唤醒(本芯片没有模拟信号唤醒) P3_WKUP_SRC_VDDIO_LVD = 4, //LVD唤醒 }; 查唤醒源 ----------------------------- 软关机查询唤醒源 >>>>>>>>>>>>>>>>>>>>>>>> power_wakeup_reason_dump 软关机复位之后打印及记录唤醒源,调用此函数之后才能够使用判断唤醒源接口。 原型: .. code-block:: c void power_wakeup_reason_dump(); is_wakeup_source >>>>>>>>>>>>>>>>>>>>>>>> 软关机判断是否为指定唤醒源。 原型: .. code-block:: c enum WAKEUP_REASON { //WAKEUP PWR_WK_REASON_PLUSE_CNT_OVERFLOW, //pcnt唤醒复位 PWR_WK_REASON_P11, //P11唤醒复位 PWR_WK_REASON_LPCTMU, //触摸唤醒复位 PWR_WK_REASON_LPNFC, //NFC唤醒复位 PWR_WK_REASON_PORT_EDGE, //数字io输入边沿唤醒复位 PWR_WK_REASON_ANA_EDGE, //模拟io输入边沿唤醒复位(本芯片不支持模拟io唤醒) PWR_WK_REASON_VDDIO_LVD, //vddio lvd唤醒复位 PWR_WK_REASON_EDGE_INDEX0, //p33 index0 io唤醒复位 PWR_WK_REASON_EDGE_INDEX1, //p33 index1 io唤醒复位 PWR_WK_REASON_EDGE_INDEX2, //p33 index2 io唤醒复位 PWR_WK_REASON_EDGE_INDEX3, //p33 index3 io唤醒复位 PWR_WK_REASON_EDGE_INDEX4, //p33 index4 io唤醒复位 PWR_WK_REASON_EDGE_INDEX5, //p33 index5 io唤醒复位 PWR_WK_REASON_EDGE_INDEX6, //p33 index6 io唤醒复位 PWR_WK_REASON_EDGE_INDEX7, //p33 index7 io唤醒复位 PWR_WK_REASON_EDGE_INDEX8, //p33 index8 io唤醒复位 PWR_WK_REASON_EDGE_INDEX9, //p33 index9 io唤醒复位 PWR_WK_REASON_EDGE_INDEX10, //p33 index10 io唤醒复位 PWR_WK_REASON_EDGE_INDEX11, //p33 index11 io唤醒复位 PWR_ANA_WK_REASON_FALLINIG_EDGE_LDOIN, //LDO5V上升沿唤醒复位 PWR_ANA_WK_REASON_RISING_EDGE_LDOIN, //LDO5V下降沿唤醒复位 PWR_ANA_WK_REASON_FALLING_EDGE_VBATCH, //VBATCH上升降沿唤醒复位 PWR_ANA_WK_REASON_RISING_EDGE_VBATCH, //VBATCH下降沿唤醒复位 PWR_RTC_WK_REASON_ALM, //RTC闹钟唤醒复位 PWR_RTC_WK_REASON_256HZ, //RTC 256Hz时基唤醒复位 PWR_RTC_WK_REASON_64HZ, //RTC 64Hz时基唤醒复位 PWR_RTC_WK_REASON_2HZ, //RTC 2Hz时基唤醒复位 PWR_RTC_WK_REASON_1HZ, //RTC 1Hz时基唤醒复位 PWR_WKUP_REASON_RESERVE = 63, }; u8 is_wakeup_source(enum WAKEUP_REASON index); 参数: ========== ====================== index 唤醒源 返回值 是否为指定唤醒源 ========== ====================== 运行状态唤醒源 >>>>>>>>>>>>>>>>>>>>>> 系统在运行状态或sleep模式唤醒之后,能够进入中断回调注册的函数,具体配置回调函数的方法在对应模块章节,支持以下模块。 - 边沿唤醒 - rtc唤醒