Example #1
0
/*
******************************************************************************
**                        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();
}
Example #4
0
/*******************************************************************************
* 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();
}