Hello,
I'm implementing RTC match functionality on LM4F110E5QR platform.
Following shows my partial code about RTC match.
The functionality is working fine at beggining of operation.
However, the RTC match interrupt "IntRTCIntHandler()" would not be toggling after a period of operation time.
Could anyone tell me what's happen?
Thanks.
Main() { SysCtlPeripheralEnable(SYSCTL_PERIPH_HIBERNATE); SysCtlPeripheralSleepEnable(SYSCTL_PERIPH_HIBERNATE); SysCtlPeripheralDeepSleepEnable(SYSCTL_PERIPH_HIBERNATE); xTaskCreate (MonitorTask, (signed portCHAR *)"MonitorTask", 240, NULL, 4 , NULL); while(1) { } } void MonitorTask( void *pvParameters ) { HibernateIntClear(HIBERNATE_INT_RTC_MATCH_0); HibernateIntClear(HIBERNATE_INT_RTC_MATCH_1); HibernateIntEnable(HIBERNATE_INT_RTC_MATCH_0); HibernateIntDisable(HIBERNATE_INT_RTC_MATCH_1); IntPrioritySet(INT_HIBERNATE, 6<<5); HibernateIntRegister(IntRTCIntHandler); HibernateRTCMatch0Set(HibernateRTCGet() + 10); HibernateIntEnable(HIBERNATE_INT_RTC_MATCH_0); g_xMonitorQueue = xQueueCreate( 4 , sizeof(tMonitorTrigSource ) ); for(;;) { xQueueReceive( g_xMonitorQueue, &MonitorTrigSource, portMAX_DELAY ); if(MonitorTrigSource == Monitor_Trig_IntRTC) { HibernateRTCMatch0Set(HibernateRTCGet() + 10); HibernateIntEnable(HIBERNATE_INT_RTC_MATCH_0); } } } void IntRTCIntHandler(void) { unsigned long ulHibernateIntValue; signed portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE; ulHibernateIntValue = HibernateIntStatus(true); if (ulHibernateIntValue & HIBERNATE_INT_RTC_MATCH_0) { tMonitorTrigSource MonitorTrigSource = Monitor_Trig_IntRTC; HibernateIntDisable(HIBERNATE_INT_RTC_MATCH_0); HibernateRTCMatch0Set(0); xQueueSendFromISR( g_xMonitorQueue, ( void * ) &MonitorTrigSource, &xHigherPriorityTaskWoken ); if (xHigherPriorityTaskWoken != pdFALSE ) { taskYIELD(); } HibernateIntClear(HIBERNATE_INT_RTC_MATCH_0); } else if (ulHibernateIntValue & HIBERNATE_INT_RTC_MATCH_1) { HibernateIntDisable(HIBERNATE_INT_RTC_MATCH_1); HibernateRTCMatch1Set(0); HibernateIntClear(HIBERNATE_INT_RTC_MATCH_1); } }