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
|