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:
Thu Jul 02 16:15:09 2015 +0100
Revision:
580:3c14cb9b87c5
Synchronized with git revision 213caf296f26963a7bea129b8ec4f33bbd1e6588

Full URL: https://github.com/mbedmicro/mbed/commit/213caf296f26963a7bea129b8ec4f33bbd1e6588/

commit of mps2

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mbed_official 580:3c14cb9b87c5 1 /* MPS2 CMSIS Library
mbed_official 580:3c14cb9b87c5 2 *
mbed_official 580:3c14cb9b87c5 3 * Copyright (c) 2006-2015 ARM Limited
mbed_official 580:3c14cb9b87c5 4 * All rights reserved.
mbed_official 580:3c14cb9b87c5 5 *
mbed_official 580:3c14cb9b87c5 6 * Redistribution and use in source and binary forms, with or without
mbed_official 580:3c14cb9b87c5 7 * modification, are permitted provided that the following conditions are met:
mbed_official 580:3c14cb9b87c5 8 *
mbed_official 580:3c14cb9b87c5 9 * 1. Redistributions of source code must retain the above copyright notice,
mbed_official 580:3c14cb9b87c5 10 * this list of conditions and the following disclaimer.
mbed_official 580:3c14cb9b87c5 11 *
mbed_official 580:3c14cb9b87c5 12 * 2. Redistributions in binary form must reproduce the above copyright notice,
mbed_official 580:3c14cb9b87c5 13 * this list of conditions and the following disclaimer in the documentation
mbed_official 580:3c14cb9b87c5 14 * and/or other materials provided with the distribution.
mbed_official 580:3c14cb9b87c5 15 *
mbed_official 580:3c14cb9b87c5 16 * 3. Neither the name of the copyright holder nor the names of its contributors
mbed_official 580:3c14cb9b87c5 17 * may be used to endorse or promote products derived from this software without
mbed_official 580:3c14cb9b87c5 18 * specific prior written permission.
mbed_official 580:3c14cb9b87c5 19 *
mbed_official 580:3c14cb9b87c5 20 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
mbed_official 580:3c14cb9b87c5 21 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
mbed_official 580:3c14cb9b87c5 22 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
mbed_official 580:3c14cb9b87c5 23 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
mbed_official 580:3c14cb9b87c5 24 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
mbed_official 580:3c14cb9b87c5 25 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
mbed_official 580:3c14cb9b87c5 26 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
mbed_official 580:3c14cb9b87c5 27 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
mbed_official 580:3c14cb9b87c5 28 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
mbed_official 580:3c14cb9b87c5 29 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
mbed_official 580:3c14cb9b87c5 30 * POSSIBILITY OF SUCH DAMAGE.
mbed_official 580:3c14cb9b87c5 31 *******************************************************************************
mbed_official 580:3c14cb9b87c5 32 * CMSIS-style functionality to support dynamic vectors
mbed_official 580:3c14cb9b87c5 33 *******************************************************************************/
mbed_official 580:3c14cb9b87c5 34 #include "cmsis_nvic.h"
mbed_official 580:3c14cb9b87c5 35
mbed_official 580:3c14cb9b87c5 36 #define NVIC_RAM_VECTOR_ADDRESS (0x20000000) // Location of vectors in RAM
mbed_official 580:3c14cb9b87c5 37 #define NVIC_FLASH_VECTOR_ADDRESS (0x00000000) // Initial vector position in flash
mbed_official 580:3c14cb9b87c5 38
mbed_official 580:3c14cb9b87c5 39 void NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) {
mbed_official 580:3c14cb9b87c5 40 uint32_t *vectors = (uint32_t*)SCB->VTOR;
mbed_official 580:3c14cb9b87c5 41 uint32_t i;
mbed_official 580:3c14cb9b87c5 42
mbed_official 580:3c14cb9b87c5 43 // Copy and switch to dynamic vectors if the first time called
mbed_official 580:3c14cb9b87c5 44 if (SCB->VTOR == NVIC_FLASH_VECTOR_ADDRESS) {
mbed_official 580:3c14cb9b87c5 45 uint32_t *old_vectors = vectors;
mbed_official 580:3c14cb9b87c5 46 vectors = (uint32_t*)NVIC_RAM_VECTOR_ADDRESS;
mbed_official 580:3c14cb9b87c5 47 for (i=0; i<NVIC_NUM_VECTORS; i++) {
mbed_official 580:3c14cb9b87c5 48 vectors[i] = old_vectors[i];
mbed_official 580:3c14cb9b87c5 49 }
mbed_official 580:3c14cb9b87c5 50 SCB->VTOR = (uint32_t)NVIC_RAM_VECTOR_ADDRESS;
mbed_official 580:3c14cb9b87c5 51 }
mbed_official 580:3c14cb9b87c5 52 vectors[IRQn + NVIC_USER_IRQ_OFFSET] = vector;
mbed_official 580:3c14cb9b87c5 53 }
mbed_official 580:3c14cb9b87c5 54
mbed_official 580:3c14cb9b87c5 55 uint32_t NVIC_GetVector(IRQn_Type IRQn) {
mbed_official 580:3c14cb9b87c5 56 uint32_t *vectors = (uint32_t*)SCB->VTOR;
mbed_official 580:3c14cb9b87c5 57 return vectors[IRQn + NVIC_USER_IRQ_OFFSET];
mbed_official 580:3c14cb9b87c5 58 }