TM4C123GE6PZ Hibernate 休眠模块在执行如下代码后,第一次可以运行到while(1)处,第二次上电运行后,卡在HibernateEnableExpClk(SysCtlClockGet());,后续无论上电多少次都是卡在这里。我只有把电池抠出来,彻底断电,才能有效执行。我怀疑Hibernate 模块执行了HibernateRequest();操作之后就无法唤醒了。
是硬件问题吗?我试了RTC功能是正常的,可以正常计数。
int RTC_InitSLEEP(void)
{
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOJ);
GPIOPinTypeGPIOOutput(GPIO_PORTJ_BASE, GPIO_PIN_1);
GPIOPinWrite(GPIO_PORTJ_BASE, GPIO_PIN_1, GPIO_PIN_1);
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);
SysCtlPeripheralEnable(SYSCTL_PERIPH_HIBERNATE);
while(!SysCtlPeripheralReady(SYSCTL_PERIPH_HIBERNATE)){; }
HibernateEnableExpClk(SysCtlClockGet());
HibernateClockConfig(HIBERNATE_OSC_LOWDRIVE);
HibernateRTCEnable();
SysCtlDelay(64000000);
HibernateRTCSet(0);
HibernateRTCMatch0Set(10);
int Hval = HibernateRTCMatch0Get();
HibernateWakeSet(HIBERNATE_WAKE_RTC);
HibernateRequest();
while(1)
{
;
}
}