/* ****************************************************************************** ** VOID BSP_WakeupCpuIntISR(VOID) ** ** Description : Wakeup cpu INT handler ** Arguments : ** Returns : 无 ** Author : ** Date : ** ****************************************************************************** */ VOID BSP_WakeupCpuIntISR(VOID) { NST_TskMsg* msg; //DBGPRINT_PS(DEBUG_TRACE, "MLME_AUTO_WAKEUP_ID\n"); //Set Mask NST_WR_PWM_REG(ADDR_WAKEUP_CPU_MASK, 0x00000003); // 关WAKE UP中断 NVIC_DisableIRQ(WAKEUP_CPU_IRQn); /* 清M3 的中断*/ NVIC_ClearIRQChannelPendingBit(WAKEUP_CPU_IRQn); //发消息给syscore msg = NST_AllocTskMsg(); if(msg) { msg->msgId = MLME_AUTO_WAKEUP_ID; // NST_ZERO_MEM(msg->msgBody, sizeof(msg->msgBody)); NST_SendMsg(gpMacMngTskMsgQ, msg); } // 开中断 NVIC_EnableIRQ(WAKEUP_CPU_IRQn); }
/******************************************************************************* * Function Name : WWDG0_IRQHandler * Description : This function handles WWDG01 interrupt request. * Input : None * Output : None * Return : None *******************************************************************************/ __irq void WWDG0_IRQHandler(void) { void BSP_UartPutcPolled(UINT8 Data); UINT32 RegEoi; NVIC_ClearIRQChannelPendingBit(WWDG0_IRQn); // clear interrupt RegEoi = *Wdt0Eoi; RegEoi = RegEoi; #if 0 #if DEBUG_ON // add for debug BSP_UartPutcPolled('W'); BSP_UartPutcPolled('D'); BSP_UartPutcPolled('O'); BSP_UartPutcPolled('G'); BSP_UartPutcPolled('!'); BSP_UartPutcPolled('!'); BSP_UartPutcPolled('\n'); #endif #endif }
/******************************************************************************* * Function Name : TMR1_IRQHandler * Description : This function handles timer 1 interrupt. * Input : None * Output : None * Return : None *******************************************************************************/ __irq void TMR1_IRQHandler(void) { UINT32 RegEoi; OSIntEnter(); // ASSERT(NVIC_GetIRQChannelPendingBitStatus(TMR0_IRQn) == SET); // ASSERT(*Tmr0IntStatus & 0x01); // 关中断 NVIC_DisableIRQ(TMR1_IRQn); NVIC_ClearIRQChannelPendingBit(TMR1_IRQn); // clear timer interrupt RegEoi = *Tmr1Eoi; RegEoi = *TmrsEoi; RegEoi = RegEoi; /************** Process light task about PWM output ****************/ { light_timer_irq_handle(); } /*******************************************************************/ // 开中断 NVIC_EnableIRQ(TMR1_IRQn); OSIntExit(); }
/******************************************************************************* * Function Name : RTC_IRQHandler * Description : This function handles RTC global interrupt request. * Input : None * Output : None * Return : None *******************************************************************************/ void RTC_IRQHandler(void) { #ifdef USE_RTC NVIC_ClearIRQChannelPendingBit(RTC_IRQChannel); RTC_ClearITPendingBit(RTC_IT_SEC); //CallTrace(TRACE_DRV_HIGH," RTC ISR = %d\n\r", RTC_GetCounter()); #endif }
/******************************************************************************* * Function Name : TMR0_IRQHandler * Description : This function handles timer 0 interrupt. * Input : None * Output : None * Return : None *******************************************************************************/ __irq void TMR0_IRQHandler(void) { UINT32 RegEoi; OSIntEnter(); // ASSERT(NVIC_GetIRQChannelPendingBitStatus(TMR0_IRQn) == SET); // ASSERT(*Tmr0IntStatus & 0x01); // 关中断 NVIC_DisableIRQ(TMR0_IRQn); NVIC_ClearIRQChannelPendingBit(TMR0_IRQn); // clear timer interrupt RegEoi = *Tmr0Eoi; RegEoi = *TmrsEoi; RegEoi = RegEoi; // 开中断 NVIC_EnableIRQ(TMR0_IRQn); OSIntExit(); }