Hi, 大家好,
最近在用CC3200做项目,其中涉及到进入休眠,1、通过GPIO唤醒,2通过RTC唤醒(实现系统自复位功能)
进入休眠之前已经设置了唤醒源,例如GPIO唤醒
void EnterHIBernate()
{
#define SLOW_CLK_FREQ (32*1024)
//
// Configure the HIB module RTC wake time
//
MAP_PRCMHibernateIntervalSet(5 * SLOW_CLK_FREQ);
//
// Enable the HIB RTC
//
MAP_PRCMHibernateWakeupSourceEnable(PRCM_HIB_LOW_LEVEL|PRCM_HIB_GPIO4|PRCM_HIB_GPIO13);//power key and charge key
DBG_PRINT("HIB: Entering HIBernate...\n\r");
MAP_UtilsDelay(80000);
//
// powering down SPI Flash to save power
//
Utils_SpiFlashDeepPowerDown();
//
// Enter HIBernate mode
//
MAP_PRCMHibernateEnter();
}
通过RTC唤醒,以便实现系统复位功能
void RebootMCU(void)
{
//
// Configure hibernate RTC wakeup
//
PRCMHibernateWakeupSourceEnable(PRCM_HIB_SLOW_CLK_CTR);
//
// Delay loop
//
MAP_UtilsDelay(800000);
//
// Set wake up time
//
PRCMHibernateIntervalSet(330);
Report("\r\n-------RebootMCU------\r\n");
//
// Enter HIBernate mode
//
MAP_PRCMHibernateEnter();
}
但当唤醒后调用MAP_PRCMHibernateWakeupCauseGet 获取唤醒源,该函数返回零,得不到正确的结果
正确的结果应该返回PRCM_HIB_WAKEUP_CAUSE_SLOW_CLOCK或PRCM_HIB_WAKEUP_CAUSE_GPIO
why?
what happened