mbed library sources, include can_api for nucleo-f091rc

Dependents:   CanNucleoF0_example

Fork of mbed-src by mbed official

Committer:
emilmont
Date:
Fri Jun 14 17:49:17 2013 +0100
Revision:
10:3bc89ef62ce7
Unify mbed library sources

Who changed what in which revision?

UserRevisionLine numberNew contents of line
emilmont 10:3bc89ef62ce7 1 /* mbed Microcontroller Library - cmsis_nvic for LCP1768
emilmont 10:3bc89ef62ce7 2 * Copyright (c) 2009-2011 ARM Limited. All rights reserved.
emilmont 10:3bc89ef62ce7 3 *
emilmont 10:3bc89ef62ce7 4 * CMSIS-style functionality to support dynamic vectors
emilmont 10:3bc89ef62ce7 5 */
emilmont 10:3bc89ef62ce7 6 #include "cmsis_nvic.h"
emilmont 10:3bc89ef62ce7 7
emilmont 10:3bc89ef62ce7 8 #define NVIC_NUM_VECTORS (16 + 33) // CORE + MCU Peripherals
emilmont 10:3bc89ef62ce7 9 #define NVIC_RAM_VECTOR_ADDRESS (0x10000000) // Location of vectors in RAM
emilmont 10:3bc89ef62ce7 10
emilmont 10:3bc89ef62ce7 11 void NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) {
emilmont 10:3bc89ef62ce7 12 static volatile uint32_t* vectors = (uint32_t*)NVIC_RAM_VECTOR_ADDRESS;
emilmont 10:3bc89ef62ce7 13 int i;
emilmont 10:3bc89ef62ce7 14 // Copy and switch to dynamic vectors if first time called
emilmont 10:3bc89ef62ce7 15 if (SCB->VTOR != NVIC_RAM_VECTOR_ADDRESS) {
emilmont 10:3bc89ef62ce7 16 uint32_t *old_vectors = (uint32_t*)SCB->VTOR;
emilmont 10:3bc89ef62ce7 17 for (i=0; i<NVIC_NUM_VECTORS; i++) {
emilmont 10:3bc89ef62ce7 18 vectors[i] = old_vectors[i];
emilmont 10:3bc89ef62ce7 19 }
emilmont 10:3bc89ef62ce7 20 SCB->VTOR = (uint32_t)vectors;
emilmont 10:3bc89ef62ce7 21 }
emilmont 10:3bc89ef62ce7 22
emilmont 10:3bc89ef62ce7 23 vectors[IRQn + 16] = vector;
emilmont 10:3bc89ef62ce7 24 }
emilmont 10:3bc89ef62ce7 25
emilmont 10:3bc89ef62ce7 26 uint32_t NVIC_GetVector(IRQn_Type IRQn) {
emilmont 10:3bc89ef62ce7 27 uint32_t *vectors = (uint32_t*)SCB->VTOR;
emilmont 10:3bc89ef62ce7 28 return vectors[IRQn + 16];
emilmont 10:3bc89ef62ce7 29 }
emilmont 10:3bc89ef62ce7 30