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.

冬眠中断无法进入



平台: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)
{

}
}

  • 请参考如下代码:

    int main(void)
    {
    SysCtlClockSet(SYSCTL_SYSDIV_5|SYSCTL_USE_PLL|SYSCTL_XTAL_16MHZ|SYSCTL_OSC_MAIN);

    SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);
    GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE, GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3);
    GPIOPinWrite(GPIO_PORTF_BASE,GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3, 0x08);

    SysCtlPeripheralEnable(SYSCTL_PERIPH_HIBERNATE);
    HibernateEnableExpClk(SysCtlClockGet());
    HibernateGPIORetentionEnable();
    SysCtlDelay(64000000);
    HibernateRTCSet(0);
    HibernateRTCEnable();
    HibernateRTCMatchSet(0,5);
    HibernateWakeSet(HIBERNATE_WAKE_PIN | HIBERNATE_WAKE_RTC);
    GPIOPinWrite(GPIO_PORTF_BASE,GPIO_PIN_3, 0x00);

    HibernateRequest();
    while(1)
    {
    }
    }