TM4C123GE6PZ: TM4C123GE6PZ Hibernate 休眠模块卡住的问题

Part Number: TM4C123GE6PZ


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)
    {
        ;
    }

}