Date: March 20, 2011 This library is created from "LPC17xx CMSIS-Compliant Standard Peripheral Firmware Driver Library (GNU, Keil, IAR) (Jan 28, 2011)", available from NXP's website, under "All microcontrollers support documents" [[http://ics.nxp.com/support/documents/microcontrollers/?type=software]] You will need to follow [[/projects/libraries/svn/mbed/trunk/LPC1768/LPC17xx.h]] while using this library Examples provided here [[/users/frank26080115/programs/LPC1700CMSIS_Examples/]] The beautiful thing is that NXP does not place copyright protection on any of the files in here Only a few modifications are made to make it compile with the mbed online compiler, I fixed some warnings as well. This is untested as of March 20, 2011 Forum post about this library: [[/forum/mbed/topic/2030/]]

Committer:
frank26080115
Date:
Sun Mar 20 18:45:15 2011 +0000
Revision:
0:84d7747641aa

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
frank26080115 0:84d7747641aa 1 /***********************************************************************//**
frank26080115 0:84d7747641aa 2 * @file lpc17xx_nvic.c
frank26080115 0:84d7747641aa 3 * @brief Contains all expansion functions support for
frank26080115 0:84d7747641aa 4 * NVIC firmware library on LPC17xx. The main
frank26080115 0:84d7747641aa 5 * NVIC functions are defined in core_cm3.h
frank26080115 0:84d7747641aa 6 * @version 2.0
frank26080115 0:84d7747641aa 7 * @date 21. May. 2010
frank26080115 0:84d7747641aa 8 * @author NXP MCU SW Application Team
frank26080115 0:84d7747641aa 9 **************************************************************************
frank26080115 0:84d7747641aa 10 * Software that is described herein is for illustrative purposes only
frank26080115 0:84d7747641aa 11 * which provides customers with programming information regarding the
frank26080115 0:84d7747641aa 12 * products. This software is supplied "AS IS" without any warranties.
frank26080115 0:84d7747641aa 13 * NXP Semiconductors assumes no responsibility or liability for the
frank26080115 0:84d7747641aa 14 * use of the software, conveys no license or title under any patent,
frank26080115 0:84d7747641aa 15 * copyright, or mask work right to the product. NXP Semiconductors
frank26080115 0:84d7747641aa 16 * reserves the right to make changes in the software without
frank26080115 0:84d7747641aa 17 * notification. NXP Semiconductors also make no representation or
frank26080115 0:84d7747641aa 18 * warranty that such application will be suitable for the specified
frank26080115 0:84d7747641aa 19 * use without further testing or modification.
frank26080115 0:84d7747641aa 20 **********************************************************************/
frank26080115 0:84d7747641aa 21
frank26080115 0:84d7747641aa 22 /* Peripheral group ----------------------------------------------------------- */
frank26080115 0:84d7747641aa 23 /** @addtogroup NVIC
frank26080115 0:84d7747641aa 24 * @{
frank26080115 0:84d7747641aa 25 */
frank26080115 0:84d7747641aa 26
frank26080115 0:84d7747641aa 27 /* Includes ------------------------------------------------------------------- */
frank26080115 0:84d7747641aa 28 #include "lpc17xx_nvic.h"
frank26080115 0:84d7747641aa 29
frank26080115 0:84d7747641aa 30
frank26080115 0:84d7747641aa 31 /* Private Macros ------------------------------------------------------------- */
frank26080115 0:84d7747641aa 32 /** @addtogroup NVIC_Private_Macros
frank26080115 0:84d7747641aa 33 * @{
frank26080115 0:84d7747641aa 34 */
frank26080115 0:84d7747641aa 35
frank26080115 0:84d7747641aa 36 /* Vector table offset bit mask */
frank26080115 0:84d7747641aa 37 #define NVIC_VTOR_MASK 0x3FFFFF80
frank26080115 0:84d7747641aa 38
frank26080115 0:84d7747641aa 39 /**
frank26080115 0:84d7747641aa 40 * @}
frank26080115 0:84d7747641aa 41 */
frank26080115 0:84d7747641aa 42
frank26080115 0:84d7747641aa 43
frank26080115 0:84d7747641aa 44 /* Public Functions ----------------------------------------------------------- */
frank26080115 0:84d7747641aa 45 /** @addtogroup NVIC_Public_Functions
frank26080115 0:84d7747641aa 46 * @{
frank26080115 0:84d7747641aa 47 */
frank26080115 0:84d7747641aa 48
frank26080115 0:84d7747641aa 49
frank26080115 0:84d7747641aa 50 /*****************************************************************************//**
frank26080115 0:84d7747641aa 51 * @brief De-initializes the NVIC peripheral registers to their default
frank26080115 0:84d7747641aa 52 * reset values.
frank26080115 0:84d7747641aa 53 * @param None
frank26080115 0:84d7747641aa 54 * @return None
frank26080115 0:84d7747641aa 55 *
frank26080115 0:84d7747641aa 56 * These following NVIC peripheral registers will be de-initialized:
frank26080115 0:84d7747641aa 57 * - Disable Interrupt (32 IRQ interrupt sources that matched with LPC17xx)
frank26080115 0:84d7747641aa 58 * - Clear all Pending Interrupts (32 IRQ interrupt source that matched with LPC17xx)
frank26080115 0:84d7747641aa 59 * - Clear all Interrupt Priorities (32 IRQ interrupt source that matched with LPC17xx)
frank26080115 0:84d7747641aa 60 *******************************************************************************/
frank26080115 0:84d7747641aa 61 void NVIC_DeInit(void)
frank26080115 0:84d7747641aa 62 {
frank26080115 0:84d7747641aa 63 uint8_t tmp;
frank26080115 0:84d7747641aa 64
frank26080115 0:84d7747641aa 65 /* Disable all interrupts */
frank26080115 0:84d7747641aa 66 NVIC->ICER[0] = 0xFFFFFFFF;
frank26080115 0:84d7747641aa 67 NVIC->ICER[1] = 0x00000001;
frank26080115 0:84d7747641aa 68 /* Clear all pending interrupts */
frank26080115 0:84d7747641aa 69 NVIC->ICPR[0] = 0xFFFFFFFF;
frank26080115 0:84d7747641aa 70 NVIC->ICPR[1] = 0x00000001;
frank26080115 0:84d7747641aa 71
frank26080115 0:84d7747641aa 72 /* Clear all interrupt priority */
frank26080115 0:84d7747641aa 73 for (tmp = 0; tmp < 32; tmp++) {
frank26080115 0:84d7747641aa 74 NVIC->IP[tmp] = 0x00;
frank26080115 0:84d7747641aa 75 }
frank26080115 0:84d7747641aa 76 }
frank26080115 0:84d7747641aa 77
frank26080115 0:84d7747641aa 78 /*****************************************************************************//**
frank26080115 0:84d7747641aa 79 * @brief De-initializes the SCB peripheral registers to their default
frank26080115 0:84d7747641aa 80 * reset values.
frank26080115 0:84d7747641aa 81 * @param none
frank26080115 0:84d7747641aa 82 * @return none
frank26080115 0:84d7747641aa 83 *
frank26080115 0:84d7747641aa 84 * These following SCB NVIC peripheral registers will be de-initialized:
frank26080115 0:84d7747641aa 85 * - Interrupt Control State register
frank26080115 0:84d7747641aa 86 * - Interrupt Vector Table Offset register
frank26080115 0:84d7747641aa 87 * - Application Interrupt/Reset Control register
frank26080115 0:84d7747641aa 88 * - System Control register
frank26080115 0:84d7747641aa 89 * - Configuration Control register
frank26080115 0:84d7747641aa 90 * - System Handlers Priority Registers
frank26080115 0:84d7747641aa 91 * - System Handler Control and State Register
frank26080115 0:84d7747641aa 92 * - Configurable Fault Status Register
frank26080115 0:84d7747641aa 93 * - Hard Fault Status Register
frank26080115 0:84d7747641aa 94 * - Debug Fault Status Register
frank26080115 0:84d7747641aa 95 *******************************************************************************/
frank26080115 0:84d7747641aa 96 void NVIC_SCBDeInit(void)
frank26080115 0:84d7747641aa 97 {
frank26080115 0:84d7747641aa 98 uint8_t tmp;
frank26080115 0:84d7747641aa 99
frank26080115 0:84d7747641aa 100 SCB->ICSR = 0x0A000000;
frank26080115 0:84d7747641aa 101 SCB->VTOR = 0x00000000;
frank26080115 0:84d7747641aa 102 SCB->AIRCR = 0x05FA0000;
frank26080115 0:84d7747641aa 103 SCB->SCR = 0x00000000;
frank26080115 0:84d7747641aa 104 SCB->CCR = 0x00000000;
frank26080115 0:84d7747641aa 105
frank26080115 0:84d7747641aa 106 for (tmp = 0; tmp < 32; tmp++) {
frank26080115 0:84d7747641aa 107 SCB->SHP[tmp] = 0x00;
frank26080115 0:84d7747641aa 108 }
frank26080115 0:84d7747641aa 109
frank26080115 0:84d7747641aa 110 SCB->SHCSR = 0x00000000;
frank26080115 0:84d7747641aa 111 SCB->CFSR = 0xFFFFFFFF;
frank26080115 0:84d7747641aa 112 SCB->HFSR = 0xFFFFFFFF;
frank26080115 0:84d7747641aa 113 SCB->DFSR = 0xFFFFFFFF;
frank26080115 0:84d7747641aa 114 }
frank26080115 0:84d7747641aa 115
frank26080115 0:84d7747641aa 116
frank26080115 0:84d7747641aa 117 /*****************************************************************************//**
frank26080115 0:84d7747641aa 118 * @brief Set Vector Table Offset value
frank26080115 0:84d7747641aa 119 * @param offset Offset value
frank26080115 0:84d7747641aa 120 * @return None
frank26080115 0:84d7747641aa 121 *******************************************************************************/
frank26080115 0:84d7747641aa 122 void NVIC_SetVTOR(uint32_t offset)
frank26080115 0:84d7747641aa 123 {
frank26080115 0:84d7747641aa 124 // SCB->VTOR = (offset & NVIC_VTOR_MASK);
frank26080115 0:84d7747641aa 125 SCB->VTOR = offset;
frank26080115 0:84d7747641aa 126 }
frank26080115 0:84d7747641aa 127
frank26080115 0:84d7747641aa 128 /**
frank26080115 0:84d7747641aa 129 * @}
frank26080115 0:84d7747641aa 130 */
frank26080115 0:84d7747641aa 131
frank26080115 0:84d7747641aa 132 /**
frank26080115 0:84d7747641aa 133 * @}
frank26080115 0:84d7747641aa 134 */
frank26080115 0:84d7747641aa 135
frank26080115 0:84d7747641aa 136 /* --------------------------------- End Of File ------------------------------ */