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
 | 
