void RTT_ISR(void) { RtcMode0 *rtcMode0 = &(RTT_DEV); uint8_t status = rtcMode0->INTFLAG.reg; if ( (status & RTC_MODE0_INTFLAG_CMP0) && (rtt_callback.alarm_cb != NULL) ) { rtt_callback.alarm_cb(rtt_callback.alarm_arg); rtcMode0->INTFLAG.reg |= RTC_MODE0_INTFLAG_CMP0; } if ( (status & RTC_MODE0_INTFLAG_OVF) && (rtt_callback.overflow_cb != NULL) ) { rtt_callback.overflow_cb(rtt_callback.overflow_arg); rtcMode0->INTFLAG.reg |= RTC_MODE0_INTFLAG_OVF; } cortexm_isr_end(); }
void RTT_ISR(void) { RTC_Type *rtt = RTT_DEV; if (rtt->SR & RTC_SR_TAF_MASK) { if (rtt_callback.alarm_cb != NULL) { /* Disable Timer Alarm Interrupt */ rtt->IER &= ~RTC_IER_TAIE_MASK; rtt_callback.alarm_cb(rtt_callback.alarm_arg); } } if (rtt->SR & RTC_SR_TOF_MASK) { if (rtt_callback.overflow_cb != NULL) { rtt_callback.overflow_cb(rtt_callback.overflow_arg); } } cortexm_isr_end(); }
void isr_rtc(void) { if ((RTC_IntGet() & RTC_IF_COMP0)) { if (rtt_state.alarm_cb != NULL) { rtt_state.alarm_cb(rtt_state.alarm_arg); } /* clear interrupt */ RTC_IntClear(RTC_IFC_COMP0); } if (RTC_IntGet() & RTC_IF_OF) { if (rtt_state.overflow_cb != NULL) { rtt_state.overflow_cb(rtt_state.overflow_arg); } /* clear interrupt */ RTC_IntClear(RTC_IFC_OF); } if (sched_context_switch_request) { thread_yield(); } }