This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Hibernation 唤醒

void HibernateIn(void)
{
 
 MAP_SysCtlPeripheralEnable(SYSCTL_PERIPH_HIBERNATE); 
 
 MAP_HibernateEnableExpClk(SysCtlClockGet());
 
 HibernateGPIORetentionEnable();
 
 MAP_HibernateWakeSet(HIBERNATE_WAKE_PIN);

 MAP_HibernateRequest();
 
 while(1)
 {
  
 }

}

我的初衷是要配置一个进入休眠及通过wake唤醒的Hibernation,代码不知道有没有什么问题?

关于唤醒,如果不配置中断处理函数,当通过pin唤醒后,程序是不是又从main函数入口处重新执行

如何判断当前是通过何种方式唤醒的?调用HibernateIntStatus()能get到吗?

  • 芯片冲HIB模式唤醒会触发POR 复位,程序指针会指向复位地址,而不是直接跳到MAIN函数入口。这时你可以检查中断状态标志位来判断是正常的POR还是HIB唤醒造成的POR.具体的标志位在HIBMIS寄存器中。

  • 你好,Tibaware中包含具体的pin唤醒例程,您可以参考

    唤醒后,会执行por复位,同时恢复battery-backed memory所保存的进入hibernation之前的state.

  • 你好,我遇到HibernateEnableExpClk(SysCtlClockGet());跑飞的问题,请问怎么解决的呢?

  • Yuanjing ran

    请检查一下你的代码 有没有使能hibernate的始终 可以通过下面这句代码实现:

    SysCtlPeripheralEnable(SYSCTL_PERIPH_HIBERNATE);