mbed library sources

Dependents:   Encrypted my_mbed lklk CyaSSL_DTLS_Cellular ... more

Superseded

This library was superseded by mbed-dev - https://os.mbed.com/users/mbed_official/code/mbed-dev/.

Development branch of the mbed library sources. This library is kept in synch with the latest changes from the mbed SDK and it is not guaranteed to work.

If you are looking for a stable and tested release, please import one of the official mbed library releases:

Import librarymbed

The official Mbed 2 C/C++ SDK provides the software platform and libraries to build your applications.

Committer:
mbed_official
Date:
Fri Jul 31 14:15:09 2015 +0100
Revision:
600:7d17ca308cd1
Parent:
554:edd95c0879f8
Synchronized with git revision e4cd8bbd3e05b68e5a7f466c74035a85743d45e0

Full URL: https://github.com/mbedmicro/mbed/commit/e4cd8bbd3e05b68e5a7f466c74035a85743d45e0/

Enable LPC8xx usart when configuring it

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mbed_official 554:edd95c0879f8 1 /* mbed Microcontroller Library
mbed_official 554:edd95c0879f8 2 * Copyright (C) 2008-2015 ARM Limited. All rights reserved.
mbed_official 554:edd95c0879f8 3 *
mbed_official 554:edd95c0879f8 4 * ARM7 version of CMSIS-like functionality - not advised for use outside mbed!
mbed_official 554:edd95c0879f8 5 * based on core_cm3.h, V1.20
mbed_official 554:edd95c0879f8 6 */
mbed_official 554:edd95c0879f8 7
mbed_official 554:edd95c0879f8 8 #ifndef __ARM7_CORE_H__
mbed_official 554:edd95c0879f8 9 #define __ARM7_CORE_H__
mbed_official 554:edd95c0879f8 10
mbed_official 554:edd95c0879f8 11 #include "vector_defns.h"
mbed_official 554:edd95c0879f8 12 #ifdef __cplusplus
mbed_official 554:edd95c0879f8 13 extern "C" {
mbed_official 554:edd95c0879f8 14 #endif
mbed_official 554:edd95c0879f8 15 //#include "cmsis_nvic.h"
mbed_official 554:edd95c0879f8 16
mbed_official 554:edd95c0879f8 17 #define __CM3_CMSIS_VERSION_MAIN (0x01) /*!< [31:16] CMSIS HAL main version */
mbed_official 554:edd95c0879f8 18 #define __CM3_CMSIS_VERSION_SUB (0x20) /*!< [15:0] CMSIS HAL sub version */
mbed_official 554:edd95c0879f8 19 #define __CM3_CMSIS_VERSION ((__CM3_CMSIS_VERSION_MAIN << 16) | __CM3_CMSIS_VERSION_SUB) /*!< CMSIS HAL version number */
mbed_official 554:edd95c0879f8 20
mbed_official 554:edd95c0879f8 21 #define __CORTEX_M (0x00) /*!< Cortex core */
mbed_official 554:edd95c0879f8 22
mbed_official 554:edd95c0879f8 23 /**
mbed_official 554:edd95c0879f8 24 * Lint configuration \n
mbed_official 554:edd95c0879f8 25 * ----------------------- \n
mbed_official 554:edd95c0879f8 26 *
mbed_official 554:edd95c0879f8 27 * The following Lint messages will be suppressed and not shown: \n
mbed_official 554:edd95c0879f8 28 * \n
mbed_official 554:edd95c0879f8 29 * --- Error 10: --- \n
mbed_official 554:edd95c0879f8 30 * register uint32_t __regBasePri __asm("basepri"); \n
mbed_official 554:edd95c0879f8 31 * Error 10: Expecting ';' \n
mbed_official 554:edd95c0879f8 32 * \n
mbed_official 554:edd95c0879f8 33 * --- Error 530: --- \n
mbed_official 554:edd95c0879f8 34 * return(__regBasePri); \n
mbed_official 554:edd95c0879f8 35 * Warning 530: Symbol '__regBasePri' (line 264) not initialized \n
mbed_official 554:edd95c0879f8 36 * \n
mbed_official 554:edd95c0879f8 37 * --- Error 550: --- \n
mbed_official 554:edd95c0879f8 38 * __regBasePri = (basePri & 0x1ff); \n
mbed_official 554:edd95c0879f8 39 * } \n
mbed_official 554:edd95c0879f8 40 * Warning 550: Symbol '__regBasePri' (line 271) not accessed \n
mbed_official 554:edd95c0879f8 41 * \n
mbed_official 554:edd95c0879f8 42 * --- Error 754: --- \n
mbed_official 554:edd95c0879f8 43 * uint32_t RESERVED0[24]; \n
mbed_official 554:edd95c0879f8 44 * Info 754: local structure member '<some, not used in the HAL>' (line 109, file ./cm3_core.h) not referenced \n
mbed_official 554:edd95c0879f8 45 * \n
mbed_official 554:edd95c0879f8 46 * --- Error 750: --- \n
mbed_official 554:edd95c0879f8 47 * #define __CM3_CORE_H__ \n
mbed_official 554:edd95c0879f8 48 * Info 750: local macro '__CM3_CORE_H__' (line 43, file./cm3_core.h) not referenced \n
mbed_official 554:edd95c0879f8 49 * \n
mbed_official 554:edd95c0879f8 50 * --- Error 528: --- \n
mbed_official 554:edd95c0879f8 51 * static __INLINE void NVIC_DisableIRQ(uint32_t IRQn) \n
mbed_official 554:edd95c0879f8 52 * Warning 528: Symbol 'NVIC_DisableIRQ(unsigned int)' (line 419, file ./cm3_core.h) not referenced \n
mbed_official 554:edd95c0879f8 53 * \n
mbed_official 554:edd95c0879f8 54 * --- Error 751: --- \n
mbed_official 554:edd95c0879f8 55 * } InterruptType_Type; \n
mbed_official 554:edd95c0879f8 56 * Info 751: local typedef 'InterruptType_Type' (line 170, file ./cm3_core.h) not referenced \n
mbed_official 554:edd95c0879f8 57 * \n
mbed_official 554:edd95c0879f8 58 * \n
mbed_official 554:edd95c0879f8 59 * Note: To re-enable a Message, insert a space before 'lint' * \n
mbed_official 554:edd95c0879f8 60 *
mbed_official 554:edd95c0879f8 61 */
mbed_official 554:edd95c0879f8 62
mbed_official 554:edd95c0879f8 63 /*lint -save */
mbed_official 554:edd95c0879f8 64 /*lint -e10 */
mbed_official 554:edd95c0879f8 65 /*lint -e530 */
mbed_official 554:edd95c0879f8 66 /*lint -e550 */
mbed_official 554:edd95c0879f8 67 /*lint -e754 */
mbed_official 554:edd95c0879f8 68 /*lint -e750 */
mbed_official 554:edd95c0879f8 69 /*lint -e528 */
mbed_official 554:edd95c0879f8 70 /*lint -e751 */
mbed_official 554:edd95c0879f8 71
mbed_official 554:edd95c0879f8 72 #include <stdint.h> /* Include standard types */
mbed_official 554:edd95c0879f8 73
mbed_official 554:edd95c0879f8 74 #if defined ( __CC_ARM )
mbed_official 554:edd95c0879f8 75 /**
mbed_official 554:edd95c0879f8 76 * @brief Return the Main Stack Pointer (current ARM7 stack)
mbed_official 554:edd95c0879f8 77 *
mbed_official 554:edd95c0879f8 78 * @param none
mbed_official 554:edd95c0879f8 79 * @return uint32_t Main Stack Pointer
mbed_official 554:edd95c0879f8 80 *
mbed_official 554:edd95c0879f8 81 * Return the current value of the MSP (main stack pointer)
mbed_official 554:edd95c0879f8 82 * Cortex processor register
mbed_official 554:edd95c0879f8 83 */
mbed_official 554:edd95c0879f8 84 extern uint32_t __get_MSP(void);
mbed_official 554:edd95c0879f8 85 #endif
mbed_official 554:edd95c0879f8 86
mbed_official 554:edd95c0879f8 87
mbed_official 554:edd95c0879f8 88 #if defined (__ICCARM__)
mbed_official 554:edd95c0879f8 89 #include <intrinsics.h> /* IAR Intrinsics */
mbed_official 554:edd95c0879f8 90 #endif
mbed_official 554:edd95c0879f8 91
mbed_official 554:edd95c0879f8 92
mbed_official 554:edd95c0879f8 93 #ifndef __NVIC_PRIO_BITS
mbed_official 554:edd95c0879f8 94 #define __NVIC_PRIO_BITS 4 /*!< standard definition for NVIC Priority Bits */
mbed_official 554:edd95c0879f8 95 #endif
mbed_official 554:edd95c0879f8 96
mbed_official 554:edd95c0879f8 97 typedef struct
mbed_official 554:edd95c0879f8 98 {
mbed_official 554:edd95c0879f8 99 uint32_t IRQStatus;
mbed_official 554:edd95c0879f8 100 uint32_t FIQStatus;
mbed_official 554:edd95c0879f8 101 uint32_t RawIntr;
mbed_official 554:edd95c0879f8 102 uint32_t IntSelect;
mbed_official 554:edd95c0879f8 103 uint32_t IntEnable;
mbed_official 554:edd95c0879f8 104 uint32_t IntEnClr;
mbed_official 554:edd95c0879f8 105 uint32_t SoftInt;
mbed_official 554:edd95c0879f8 106 uint32_t SoftIntClr;
mbed_official 554:edd95c0879f8 107 uint32_t Protection;
mbed_official 554:edd95c0879f8 108 uint32_t SWPriorityMask;
mbed_official 554:edd95c0879f8 109 uint32_t RESERVED0[54];
mbed_official 554:edd95c0879f8 110 uint32_t VectAddr[32];
mbed_official 554:edd95c0879f8 111 uint32_t RESERVED1[32];
mbed_official 554:edd95c0879f8 112 uint32_t VectPriority[32];
mbed_official 554:edd95c0879f8 113 uint32_t RESERVED2[800];
mbed_official 554:edd95c0879f8 114 uint32_t Address;
mbed_official 554:edd95c0879f8 115 } NVIC_TypeDef;
mbed_official 554:edd95c0879f8 116
mbed_official 554:edd95c0879f8 117 #define NVIC_BASE (0xFFFFF000)
mbed_official 554:edd95c0879f8 118 #define NVIC (( NVIC_TypeDef *) NVIC_BASE)
mbed_official 554:edd95c0879f8 119
mbed_official 554:edd95c0879f8 120
mbed_official 554:edd95c0879f8 121
mbed_official 554:edd95c0879f8 122 /**
mbed_official 554:edd95c0879f8 123 * IO definitions
mbed_official 554:edd95c0879f8 124 *
mbed_official 554:edd95c0879f8 125 * define access restrictions to peripheral registers
mbed_official 554:edd95c0879f8 126 */
mbed_official 554:edd95c0879f8 127
mbed_official 554:edd95c0879f8 128 #ifdef __cplusplus
mbed_official 554:edd95c0879f8 129 #define __I volatile /*!< defines 'read only' permissions */
mbed_official 554:edd95c0879f8 130 #else
mbed_official 554:edd95c0879f8 131 #define __I volatile const /*!< defines 'read only' permissions */
mbed_official 554:edd95c0879f8 132 #endif
mbed_official 554:edd95c0879f8 133 #define __O volatile /*!< defines 'write only' permissions */
mbed_official 554:edd95c0879f8 134 #define __IO volatile /*!< defines 'read / write' permissions */
mbed_official 554:edd95c0879f8 135
mbed_official 554:edd95c0879f8 136
mbed_official 554:edd95c0879f8 137
mbed_official 554:edd95c0879f8 138
mbed_official 554:edd95c0879f8 139
mbed_official 554:edd95c0879f8 140 #if defined ( __CC_ARM )
mbed_official 554:edd95c0879f8 141 #define __ASM __asm /*!< asm keyword for ARM Compiler */
mbed_official 554:edd95c0879f8 142 #define __INLINE __inline /*!< inline keyword for ARM Compiler */
mbed_official 554:edd95c0879f8 143
mbed_official 554:edd95c0879f8 144 #elif defined ( __ICCARM__ )
mbed_official 554:edd95c0879f8 145 #define __ASM __asm /*!< asm keyword for IAR Compiler */
mbed_official 554:edd95c0879f8 146 #define __INLINE inline /*!< inline keyword for IAR Compiler. Only avaiable in High optimization mode! */
mbed_official 554:edd95c0879f8 147
mbed_official 554:edd95c0879f8 148 #elif defined ( __GNUC__ )
mbed_official 554:edd95c0879f8 149 #define __ASM __asm /*!< asm keyword for GNU Compiler */
mbed_official 554:edd95c0879f8 150 #define __INLINE inline /*!< inline keyword for GNU Compiler */
mbed_official 554:edd95c0879f8 151
mbed_official 554:edd95c0879f8 152 #elif defined ( __TASKING__ )
mbed_official 554:edd95c0879f8 153 #define __ASM __asm /*!< asm keyword for TASKING Compiler */
mbed_official 554:edd95c0879f8 154 #define __INLINE inline /*!< inline keyword for TASKING Compiler */
mbed_official 554:edd95c0879f8 155
mbed_official 554:edd95c0879f8 156 #endif
mbed_official 554:edd95c0879f8 157
mbed_official 554:edd95c0879f8 158
mbed_official 554:edd95c0879f8 159 /* ################### Compiler specific Intrinsics ########################### */
mbed_official 554:edd95c0879f8 160
mbed_official 554:edd95c0879f8 161 #if defined ( __CC_ARM ) /*------------------RealView Compiler -----------------*/
mbed_official 554:edd95c0879f8 162 /* ARM armcc specific functions */
mbed_official 554:edd95c0879f8 163
mbed_official 554:edd95c0879f8 164 #define __enable_fault_irq __enable_fiq
mbed_official 554:edd95c0879f8 165 #define __disable_fault_irq __disable_fiq
mbed_official 554:edd95c0879f8 166
mbed_official 554:edd95c0879f8 167 #define __NOP __nop
mbed_official 554:edd95c0879f8 168 //#define __WFI __wfi
mbed_official 554:edd95c0879f8 169 //#define __WFE __wfe
mbed_official 554:edd95c0879f8 170 //#define __SEV __sev
mbed_official 554:edd95c0879f8 171 //#define __ISB() __isb(0)
mbed_official 554:edd95c0879f8 172 //#define __DSB() __dsb(0)
mbed_official 554:edd95c0879f8 173 //#define __DMB() __dmb(0)
mbed_official 554:edd95c0879f8 174 //#define __REV __rev
mbed_official 554:edd95c0879f8 175 //#define __RBIT __rbit
mbed_official 554:edd95c0879f8 176 #define __LDREXB(ptr) ((unsigned char ) __ldrex(ptr))
mbed_official 554:edd95c0879f8 177 #define __LDREXH(ptr) ((unsigned short) __ldrex(ptr))
mbed_official 554:edd95c0879f8 178 #define __LDREXW(ptr) ((unsigned int ) __ldrex(ptr))
mbed_official 554:edd95c0879f8 179 #define __STREXB(value, ptr) __strex(value, ptr)
mbed_official 554:edd95c0879f8 180 #define __STREXH(value, ptr) __strex(value, ptr)
mbed_official 554:edd95c0879f8 181 #define __STREXW(value, ptr) __strex(value, ptr)
mbed_official 554:edd95c0879f8 182
mbed_official 554:edd95c0879f8 183 #define __disable_irq() unsigned tmp_IntEnable = LPC_VIC->IntEnable; \
mbed_official 554:edd95c0879f8 184 LPC_VIC->IntEnClr = 0xffffffff
mbed_official 554:edd95c0879f8 185
mbed_official 554:edd95c0879f8 186 #define __enable_irq() LPC_VIC->IntEnable = tmp_IntEnable
mbed_official 554:edd95c0879f8 187
mbed_official 554:edd95c0879f8 188 #elif (defined (__ICCARM__)) /*------------------ ICC Compiler -------------------*/
mbed_official 554:edd95c0879f8 189
mbed_official 554:edd95c0879f8 190 #define __enable_irq __enable_interrupt /*!< global Interrupt enable */
mbed_official 554:edd95c0879f8 191 #define __disable_irq __disable_interrupt /*!< global Interrupt disable */
mbed_official 554:edd95c0879f8 192 #define __NOP __no_operation() /*!< no operation intrinsic in IAR Compiler */
mbed_official 554:edd95c0879f8 193
mbed_official 554:edd95c0879f8 194 #elif (defined (__GNUC__)) /*------------------ GNU Compiler ---------------------*/
mbed_official 554:edd95c0879f8 195
mbed_official 554:edd95c0879f8 196 static __INLINE void __enable_irq() {
mbed_official 554:edd95c0879f8 197 unsigned long temp;
mbed_official 554:edd95c0879f8 198 __asm__ __volatile__("mrs %0, cpsr\n"
mbed_official 554:edd95c0879f8 199 "bic %0, %0, #0x80\n"
mbed_official 554:edd95c0879f8 200 "msr cpsr_c, %0"
mbed_official 554:edd95c0879f8 201 : "=r" (temp)
mbed_official 554:edd95c0879f8 202 :
mbed_official 554:edd95c0879f8 203 : "memory");
mbed_official 554:edd95c0879f8 204 }
mbed_official 554:edd95c0879f8 205
mbed_official 554:edd95c0879f8 206 static __INLINE uint32_t __disable_irq() {
mbed_official 554:edd95c0879f8 207 unsigned long old,temp;
mbed_official 554:edd95c0879f8 208 __asm__ __volatile__("mrs %0, cpsr\n"
mbed_official 554:edd95c0879f8 209 "orr %1, %0, #0xc0\n"
mbed_official 554:edd95c0879f8 210 "msr cpsr_c, %1"
mbed_official 554:edd95c0879f8 211 : "=r" (old), "=r" (temp)
mbed_official 554:edd95c0879f8 212 :
mbed_official 554:edd95c0879f8 213 : "memory");
mbed_official 554:edd95c0879f8 214 return (old & 0x80) == 0;
mbed_official 554:edd95c0879f8 215 }
mbed_official 554:edd95c0879f8 216
mbed_official 554:edd95c0879f8 217 static __INLINE void __NOP() { __ASM volatile ("nop"); }
mbed_official 554:edd95c0879f8 218
mbed_official 554:edd95c0879f8 219 /** \brief Get Control Bits of Status Register
mbed_official 554:edd95c0879f8 220
mbed_official 554:edd95c0879f8 221 This function returns the content of the Control Bits from the Program Status Register.
mbed_official 554:edd95c0879f8 222
mbed_official 554:edd95c0879f8 223 \return Control Bits value
mbed_official 554:edd95c0879f8 224 */
mbed_official 554:edd95c0879f8 225 __attribute__( ( always_inline ) ) static inline uint32_t __get_CONTROL(void)
mbed_official 554:edd95c0879f8 226 {
mbed_official 554:edd95c0879f8 227 uint32_t result;
mbed_official 554:edd95c0879f8 228
mbed_official 554:edd95c0879f8 229 __asm__ __volatile__ ("MRS %0, CPSR \n"
mbed_official 554:edd95c0879f8 230 "AND %0,%0,#31" : "=r" (result) );
mbed_official 554:edd95c0879f8 231 return(result);
mbed_official 554:edd95c0879f8 232 }
mbed_official 554:edd95c0879f8 233 #define MODE_USER 0x10
mbed_official 554:edd95c0879f8 234 #define MODE_FIQ 0x11
mbed_official 554:edd95c0879f8 235 #define MODE_IRQ 0x12
mbed_official 554:edd95c0879f8 236 #define MODE_SUPERVISOR 0x13
mbed_official 554:edd95c0879f8 237 #define MODE_ABORT 0x17
mbed_official 554:edd95c0879f8 238 #define MODE_UNDEFINED 0x1B
mbed_official 554:edd95c0879f8 239 #define MODE_SYSTEM 0x1F
mbed_official 554:edd95c0879f8 240
mbed_official 554:edd95c0879f8 241
mbed_official 554:edd95c0879f8 242 #elif (defined (__TASKING__)) /*------------------ TASKING Compiler ---------------------*/
mbed_official 554:edd95c0879f8 243 /* TASKING carm specific functions */
mbed_official 554:edd95c0879f8 244
mbed_official 554:edd95c0879f8 245 /*
mbed_official 554:edd95c0879f8 246 * The CMSIS functions have been implemented as intrinsics in the compiler.
mbed_official 554:edd95c0879f8 247 * Please use "carm -?i" to get an up to date list of all instrinsics,
mbed_official 554:edd95c0879f8 248 * Including the CMSIS ones.
mbed_official 554:edd95c0879f8 249 */
mbed_official 554:edd95c0879f8 250
mbed_official 554:edd95c0879f8 251 #endif
mbed_official 554:edd95c0879f8 252
mbed_official 554:edd95c0879f8 253
mbed_official 554:edd95c0879f8 254 /**
mbed_official 554:edd95c0879f8 255 * @brief Enable Interrupt in NVIC Interrupt Controller
mbed_official 554:edd95c0879f8 256 *
mbed_official 554:edd95c0879f8 257 * @param IRQn_Type IRQn specifies the interrupt number
mbed_official 554:edd95c0879f8 258 * @return none
mbed_official 554:edd95c0879f8 259 *
mbed_official 554:edd95c0879f8 260 * Enable a device specific interupt in the NVIC interrupt controller.
mbed_official 554:edd95c0879f8 261 * The interrupt number cannot be a negative value.
mbed_official 554:edd95c0879f8 262 */
mbed_official 554:edd95c0879f8 263 static __INLINE void NVIC_EnableIRQ(uint32_t IRQn)
mbed_official 554:edd95c0879f8 264 {
mbed_official 554:edd95c0879f8 265 NVIC->IntEnable = 1 << (uint32_t)IRQn;
mbed_official 554:edd95c0879f8 266 }
mbed_official 554:edd95c0879f8 267
mbed_official 554:edd95c0879f8 268
mbed_official 554:edd95c0879f8 269 /**
mbed_official 554:edd95c0879f8 270 * @brief Disable the interrupt line for external interrupt specified
mbed_official 554:edd95c0879f8 271 *
mbed_official 554:edd95c0879f8 272 * @param IRQn_Type IRQn is the positive number of the external interrupt
mbed_official 554:edd95c0879f8 273 * @return none
mbed_official 554:edd95c0879f8 274 *
mbed_official 554:edd95c0879f8 275 * Disable a device specific interupt in the NVIC interrupt controller.
mbed_official 554:edd95c0879f8 276 * The interrupt number cannot be a negative value.
mbed_official 554:edd95c0879f8 277 */
mbed_official 554:edd95c0879f8 278 static __INLINE void NVIC_DisableIRQ(uint32_t IRQn)
mbed_official 554:edd95c0879f8 279 {
mbed_official 554:edd95c0879f8 280 NVIC->IntEnClr = 1 << (uint32_t)IRQn;
mbed_official 554:edd95c0879f8 281 }
mbed_official 554:edd95c0879f8 282
mbed_official 554:edd95c0879f8 283 /**
mbed_official 554:edd95c0879f8 284 * @brief Pend Interrupt in NVIC Interrupt Controller
mbed_official 554:edd95c0879f8 285 *
mbed_official 554:edd95c0879f8 286 * @param IRQn_Type IRQn specifies the interrupt number
mbed_official 554:edd95c0879f8 287 * @return none
mbed_official 554:edd95c0879f8 288 *
mbed_official 554:edd95c0879f8 289 * Force software a device specific interupt in the NVIC interrupt controller.
mbed_official 554:edd95c0879f8 290 * The interrupt number cannot be a negative value.
mbed_official 554:edd95c0879f8 291 */
mbed_official 554:edd95c0879f8 292 static __INLINE void NVIC_PendIRQ(uint32_t IRQn)
mbed_official 554:edd95c0879f8 293 {
mbed_official 554:edd95c0879f8 294 NVIC->SoftInt = 1 << (uint32_t)IRQn;
mbed_official 554:edd95c0879f8 295 }
mbed_official 554:edd95c0879f8 296
mbed_official 554:edd95c0879f8 297
mbed_official 554:edd95c0879f8 298 /**
mbed_official 554:edd95c0879f8 299 * @brief Unpend the interrupt in NVIC Interrupt Controller
mbed_official 554:edd95c0879f8 300 *
mbed_official 554:edd95c0879f8 301 * @param IRQn_Type IRQn is the positive number of the external interrupt
mbed_official 554:edd95c0879f8 302 * @return none
mbed_official 554:edd95c0879f8 303 *
mbed_official 554:edd95c0879f8 304 * Clear software device specific interupt in the NVIC interrupt controller.
mbed_official 554:edd95c0879f8 305 * The interrupt number cannot be a negative value.
mbed_official 554:edd95c0879f8 306 */
mbed_official 554:edd95c0879f8 307 static __INLINE void NVIC_UnpendIRQ(uint32_t IRQn)
mbed_official 554:edd95c0879f8 308 {
mbed_official 554:edd95c0879f8 309 NVIC->SoftIntClr = 1 << (uint32_t)IRQn;
mbed_official 554:edd95c0879f8 310 }
mbed_official 554:edd95c0879f8 311
mbed_official 554:edd95c0879f8 312 /**
mbed_official 554:edd95c0879f8 313 * @brief Is IRQ pending
mbed_official 554:edd95c0879f8 314 *
mbed_official 554:edd95c0879f8 315 * @param IRQn_Type IRQn is the positive number of the external interrupt
mbed_official 554:edd95c0879f8 316 * @return 0 if IRQ is not pending
mbed_official 554:edd95c0879f8 317 * 1 if IRQ is pending
mbed_official 554:edd95c0879f8 318 *
mbed_official 554:edd95c0879f8 319 * Returns software device specific interupt in the NVIC interrupt controller.
mbed_official 554:edd95c0879f8 320 * The interrupt number cannot be a negative value.
mbed_official 554:edd95c0879f8 321 */
mbed_official 554:edd95c0879f8 322 static __INLINE uint32_t NVIC_Pending(uint32_t IRQn)
mbed_official 554:edd95c0879f8 323 {
mbed_official 554:edd95c0879f8 324 return (NVIC->SoftInt & (1 << (uint32_t)IRQn)) != 0;
mbed_official 554:edd95c0879f8 325 }
mbed_official 554:edd95c0879f8 326
mbed_official 554:edd95c0879f8 327 static __INLINE uint32_t __get_IPSR(void)
mbed_official 554:edd95c0879f8 328 {
mbed_official 554:edd95c0879f8 329 unsigned i;
mbed_official 554:edd95c0879f8 330
mbed_official 554:edd95c0879f8 331 for(i = 0; i < 32; i ++)
mbed_official 554:edd95c0879f8 332 if(NVIC->Address == NVIC->VectAddr[i])
mbed_official 554:edd95c0879f8 333 return i;
mbed_official 554:edd95c0879f8 334 return 1; // 1 is an invalid entry in the interrupt table on LPC2460
mbed_official 554:edd95c0879f8 335 }
mbed_official 554:edd95c0879f8 336
mbed_official 554:edd95c0879f8 337 #ifdef __cplusplus
mbed_official 554:edd95c0879f8 338 }
mbed_official 554:edd95c0879f8 339 #endif
mbed_official 554:edd95c0879f8 340
mbed_official 554:edd95c0879f8 341 #endif /* __ARM7_CORE_H__ */
mbed_official 554:edd95c0879f8 342
mbed_official 554:edd95c0879f8 343 /*lint -restore */