The common folder libraries from keil LPC11Uxx code bundle
nmi.c@0:05d110ee258e, 2012-05-27 (annotated)
- Committer:
- alexan_e
- Date:
- Sun May 27 23:59:30 2012 +0000
- Revision:
- 0:05d110ee258e
Who changed what in which revision?
User | Revision | Line number | New 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 |