平台:Launchpad,start_up文件已经加入了中断,我直接观察LED的.
void IntHIBHandler(){
*(volatile unsigned long *) 0x400FC010 &= ~(1<<1); //退出休眠
HibernateIntClear(HIBERNATE_INT_RTC_MATCH_0);
HibernateRTCMatchSet(0,HibernateRTCGet()+5);
GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_2, ~GPIOPinRead(GPIO_PORTF_BASE,GPIO_PIN_2));
}
int main(void)
{
SysCtlClockSet(SYSCTL_SYSDIV_2|SYSCTL_USE_PLL|SYSCTL_XTAL_16MHZ|SYSCTL_OSC_MAIN);
SysCtlPeripheralEnable(SYSCTL_PERIPH_HIBERNATE);
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);
GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE, GPIO_PIN_2);
GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_2, 0x00);
if(!HibernateIsActive()){
HibernateEnableExpClk(SysCtlClockGet());
SysCtlDelay(64000000);
HibernateGPIORetentionEnable();
HibernateRTCEnable();
HibernateRTCSet(0);
HibernateRTCMatchSet(0,5);
HibernateWakeSet(HIBERNATE_WAKE_RTC);
HibernateIntEnable(HIBERNATE_INT_RTC_MATCH_0);
HibernateIntClear(HIBERNATE_INT_RTC_MATCH_0);
IntEnable(INT_HIBERNATE);
IntMasterEnable();
GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_2, GPIO_PIN_2);
}else{
GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_2, GPIO_PIN_2);
}
HibernateRequest();
while(1)
{
}
}