96 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			96 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/****************************************************************************
 | 
						|
 *   $Id:: nmi.c 7227 2011-04-27 20:20:38Z usb01267                         $
 | 
						|
 *   Project: NXP LPC13Uxx NMI interrupt example
 | 
						|
 *
 | 
						|
 *   Description:
 | 
						|
 *     This file contains NMI interrupt handler code example.
 | 
						|
 *
 | 
						|
 ****************************************************************************
 | 
						|
* Software that is described herein is for illustrative purposes only
 | 
						|
* which provides customers with programming information regarding the
 | 
						|
* products. This software is supplied "AS IS" without any warranties.
 | 
						|
* NXP Semiconductors assumes no responsibility or liability for the
 | 
						|
* use of the software, conveys no license or title under any patent,
 | 
						|
* copyright, or mask work right to the product. NXP Semiconductors
 | 
						|
* reserves the right to make changes in the software without
 | 
						|
* notification. NXP Semiconductors also make no representation or
 | 
						|
* warranty that such application will be suitable for the specified
 | 
						|
* use without further testing or modification.
 | 
						|
* Permission to use, copy, modify, and distribute this software and its
 | 
						|
* documentation is hereby granted, under NXP Semiconductors'
 | 
						|
* relevant copyright in the software, without fee, provided that it
 | 
						|
* is used in conjunction with NXP Semiconductors microcontrollers.  This
 | 
						|
* copyright, permission, and disclaimer notice must appear in all copies of
 | 
						|
* this code.
 | 
						|
****************************************************************************/
 | 
						|
#include "LPC13Uxx.h"
 | 
						|
#include "nmi.h"
 | 
						|
 | 
						|
#if NMI_ENABLED
 | 
						|
volatile uint32_t NMI_Counter[MAX_NMI_NUM];
 | 
						|
 | 
						|
/*****************************************************************************
 | 
						|
** Function name:		NMI_Handler
 | 
						|
**
 | 
						|
** Descriptions:		NMI interrupt handler
 | 
						|
** parameters:		None			 
 | 
						|
** 						
 | 
						|
** Returned value:	None
 | 
						|
** 
 | 
						|
*****************************************************************************/
 | 
						|
void NMI_Handler( void )
 | 
						|
{
 | 
						|
  uint32_t regVal;
 | 
						|
 | 
						|
  regVal = LPC_SYSCON->NMISRC;
 | 
						|
  regVal &=	~0x80000000;
 | 
						|
  if ( regVal < MAX_NMI_NUM )
 | 
						|
  {
 | 
						|
    if ( regVal == CT16B0_IRQn )
 | 
						|
	{
 | 
						|
	  /* Use TIMER16_0_IRQHandler as example for real application. */ 	
 | 
						|
	  LPC_CT16B0->IR = 0xFF;	/* Clear timer16_0 interrupt */
 | 
						|
	}
 | 
						|
	else if ( regVal == CT16B1_IRQn )
 | 
						|
	{
 | 
						|
	  /* Use TIMER16_1_IRQHandler as example for real application. */	
 | 
						|
	  LPC_CT16B1->IR = 0xFF;	/* Clear timer16_1 interrupt */
 | 
						|
	}
 | 
						|
    else if ( regVal == CT32B0_IRQn )
 | 
						|
	{
 | 
						|
	  /* Use TIMER32_0_IRQHandler as example for real application. */ 	
 | 
						|
	  LPC_CT32B0->IR = 0xFF;	/* Clear timer32_0 interrupt */
 | 
						|
	}
 | 
						|
	else if ( regVal == CT32B1_IRQn )
 | 
						|
	{
 | 
						|
	  /* Use TIMER32_0_IRQHandler as example for real application. */ 	
 | 
						|
	  LPC_CT32B1->IR = 0xFF;	/* Clear timer32_1 interrupt */
 | 
						|
	}
 | 
						|
	NMI_Counter[regVal]++; 
 | 
						|
  }
 | 
						|
  return;
 | 
						|
}
 | 
						|
 | 
						|
/*****************************************************************************
 | 
						|
** Function name:		NMI_Init
 | 
						|
**
 | 
						|
** Descriptions:		NMI initialization
 | 
						|
** parameters:			NMI number			 
 | 
						|
** 						
 | 
						|
** Returned value:		None
 | 
						|
** 
 | 
						|
*****************************************************************************/
 | 
						|
void NMI_Init( uint32_t NMI_num )
 | 
						|
{
 | 
						|
  uint32_t i;
 | 
						|
 | 
						|
  for ( i = 0; i < MAX_NMI_NUM; i++ )
 | 
						|
  {
 | 
						|
    NMI_Counter[i] = 0x0;
 | 
						|
  }
 | 
						|
  LPC_SYSCON->NMISRC = 0x80000000|NMI_num;
 | 
						|
  return;
 | 
						|
}
 | 
						|
 | 
						|
#endif
 |