The common folder libraries from keil LPC11Uxx code bundle

Committer:
alexan_e
Date:
Sun May 27 23:59:30 2012 +0000
Revision:
0:05d110ee258e

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
alexan_e 0:05d110ee258e 1 /****************************************************************************
alexan_e 0:05d110ee258e 2 * $Id:: nmi.c 9190 2012-02-16 20:59:45Z nxp41306 $
alexan_e 0:05d110ee258e 3 * Project: NXP LPC11Uxx NMI interrupt example
alexan_e 0:05d110ee258e 4 *
alexan_e 0:05d110ee258e 5 * Description:
alexan_e 0:05d110ee258e 6 * This file contains NMI interrupt handler code example.
alexan_e 0:05d110ee258e 7 *
alexan_e 0:05d110ee258e 8 ****************************************************************************
alexan_e 0:05d110ee258e 9 * Software that is described herein is for illustrative purposes only
alexan_e 0:05d110ee258e 10 * which provides customers with programming information regarding the
alexan_e 0:05d110ee258e 11 * products. This software is supplied "AS IS" without any warranties.
alexan_e 0:05d110ee258e 12 * NXP Semiconductors assumes no responsibility or liability for the
alexan_e 0:05d110ee258e 13 * use of the software, conveys no license or title under any patent,
alexan_e 0:05d110ee258e 14 * copyright, or mask work right to the product. NXP Semiconductors
alexan_e 0:05d110ee258e 15 * reserves the right to make changes in the software without
alexan_e 0:05d110ee258e 16 * notification. NXP Semiconductors also make no representation or
alexan_e 0:05d110ee258e 17 * warranty that such application will be suitable for the specified
alexan_e 0:05d110ee258e 18 * use without further testing or modification.
alexan_e 0:05d110ee258e 19
alexan_e 0:05d110ee258e 20 * Permission to use, copy, modify, and distribute this software and its
alexan_e 0:05d110ee258e 21 * documentation is hereby granted, under NXP Semiconductors'
alexan_e 0:05d110ee258e 22 * relevant copyright in the software, without fee, provided that it
alexan_e 0:05d110ee258e 23 * is used in conjunction with NXP Semiconductors microcontrollers. This
alexan_e 0:05d110ee258e 24 * copyright, permission, and disclaimer notice must appear in all copies of
alexan_e 0:05d110ee258e 25 * this code.
alexan_e 0:05d110ee258e 26
alexan_e 0:05d110ee258e 27 ****************************************************************************/
alexan_e 0:05d110ee258e 28
alexan_e 0:05d110ee258e 29 #include "LPC11Uxx.h"
alexan_e 0:05d110ee258e 30 #include "nmi.h"
alexan_e 0:05d110ee258e 31
alexan_e 0:05d110ee258e 32 #if NMI_ENABLED
alexan_e 0:05d110ee258e 33 volatile uint32_t NMI_Counter[MAX_NMI_NUM];
alexan_e 0:05d110ee258e 34
alexan_e 0:05d110ee258e 35 /*****************************************************************************
alexan_e 0:05d110ee258e 36 ** Function name: NMI_Handler
alexan_e 0:05d110ee258e 37 **
alexan_e 0:05d110ee258e 38 ** Descriptions: NMI interrupt handler
alexan_e 0:05d110ee258e 39 ** parameters: None
alexan_e 0:05d110ee258e 40 **
alexan_e 0:05d110ee258e 41 ** Returned value: None
alexan_e 0:05d110ee258e 42 **
alexan_e 0:05d110ee258e 43 *****************************************************************************/
alexan_e 0:05d110ee258e 44 void NMI_Handler( void )
alexan_e 0:05d110ee258e 45 {
alexan_e 0:05d110ee258e 46 uint32_t regVal;
alexan_e 0:05d110ee258e 47
alexan_e 0:05d110ee258e 48 regVal = LPC_SYSCON->NMISRC;
alexan_e 0:05d110ee258e 49 regVal &= ~0x80000000;
alexan_e 0:05d110ee258e 50 if ( regVal < MAX_NMI_NUM )
alexan_e 0:05d110ee258e 51 {
alexan_e 0:05d110ee258e 52 if ( regVal == TIMER_16_0_IRQn )
alexan_e 0:05d110ee258e 53 {
alexan_e 0:05d110ee258e 54 /* Use TIMER16_0_IRQHandler as example for real application. */
alexan_e 0:05d110ee258e 55 LPC_CT16B0->IR = 0xFF; /* Clear timer16_0 interrupt */
alexan_e 0:05d110ee258e 56 }
alexan_e 0:05d110ee258e 57 else if ( regVal == TIMER_16_1_IRQn )
alexan_e 0:05d110ee258e 58 {
alexan_e 0:05d110ee258e 59 /* Use TIMER16_1_IRQHandler as example for real application. */
alexan_e 0:05d110ee258e 60 LPC_CT16B1->IR = 0xFF; /* Clear timer16_1 interrupt */
alexan_e 0:05d110ee258e 61 }
alexan_e 0:05d110ee258e 62 else if ( regVal == TIMER_32_0_IRQn )
alexan_e 0:05d110ee258e 63 {
alexan_e 0:05d110ee258e 64 /* Use TIMER32_0_IRQHandler as example for real application. */
alexan_e 0:05d110ee258e 65 LPC_CT32B0->IR = 0xFF; /* Clear timer32_0 interrupt */
alexan_e 0:05d110ee258e 66 }
alexan_e 0:05d110ee258e 67 else if ( regVal == TIMER_32_1_IRQn )
alexan_e 0:05d110ee258e 68 {
alexan_e 0:05d110ee258e 69 /* Use TIMER32_0_IRQHandler as example for real application. */
alexan_e 0:05d110ee258e 70 LPC_CT32B1->IR = 0xFF; /* Clear timer32_1 interrupt */
alexan_e 0:05d110ee258e 71 }
alexan_e 0:05d110ee258e 72 NMI_Counter[regVal]++;
alexan_e 0:05d110ee258e 73 }
alexan_e 0:05d110ee258e 74 return;
alexan_e 0:05d110ee258e 75 }
alexan_e 0:05d110ee258e 76
alexan_e 0:05d110ee258e 77 /*****************************************************************************
alexan_e 0:05d110ee258e 78 ** Function name: NMI_Init
alexan_e 0:05d110ee258e 79 **
alexan_e 0:05d110ee258e 80 ** Descriptions: NMI initialization
alexan_e 0:05d110ee258e 81 ** parameters: NMI number
alexan_e 0:05d110ee258e 82 **
alexan_e 0:05d110ee258e 83 ** Returned value: None
alexan_e 0:05d110ee258e 84 **
alexan_e 0:05d110ee258e 85 *****************************************************************************/
alexan_e 0:05d110ee258e 86 void NMI_Init( uint32_t NMI_num )
alexan_e 0:05d110ee258e 87 {
alexan_e 0:05d110ee258e 88 uint32_t i;
alexan_e 0:05d110ee258e 89
alexan_e 0:05d110ee258e 90 for ( i = 0; i < MAX_NMI_NUM; i++ )
alexan_e 0:05d110ee258e 91 {
alexan_e 0:05d110ee258e 92 NMI_Counter[i] = 0x0;
alexan_e 0:05d110ee258e 93 }
alexan_e 0:05d110ee258e 94 LPC_SYSCON->NMISRC = 0x80000000|NMI_num;
alexan_e 0:05d110ee258e 95 return;
alexan_e 0:05d110ee258e 96 }
alexan_e 0:05d110ee258e 97
alexan_e 0:05d110ee258e 98 #endif