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
 |