mbed library sources. Supersedes mbed-src.

Dependents:   Nucleo_Hello_Encoder BLE_iBeaconScan AM1805_DEMO DISCO-F429ZI_ExportTemplate1 ... more

Committer:
AnnaBridge
Date:
Mon Oct 02 15:33:19 2017 +0100
Revision:
174:b96e65c34a4d
Parent:
170:19eb464bc2be
This updates the lib to the mbed lib v 152

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Kojto 170:19eb464bc2be 1 /*
Kojto 170:19eb464bc2be 2 * Copyright (c) 2015-2016, Freescale Semiconductor, Inc.
Kojto 170:19eb464bc2be 3 * All rights reserved.
Kojto 170:19eb464bc2be 4 *
Kojto 170:19eb464bc2be 5 * Redistribution and use in source and binary forms, with or without modification,
Kojto 170:19eb464bc2be 6 * are permitted provided that the following conditions are met:
Kojto 170:19eb464bc2be 7 *
Kojto 170:19eb464bc2be 8 * o Redistributions of source code must retain the above copyright notice, this list
Kojto 170:19eb464bc2be 9 * of conditions and the following disclaimer.
Kojto 170:19eb464bc2be 10 *
Kojto 170:19eb464bc2be 11 * o Redistributions in binary form must reproduce the above copyright notice, this
Kojto 170:19eb464bc2be 12 * list of conditions and the following disclaimer in the documentation and/or
Kojto 170:19eb464bc2be 13 * other materials provided with the distribution.
Kojto 170:19eb464bc2be 14 *
Kojto 170:19eb464bc2be 15 * o Neither the name of Freescale Semiconductor, Inc. nor the names of its
Kojto 170:19eb464bc2be 16 * contributors may be used to endorse or promote products derived from this
Kojto 170:19eb464bc2be 17 * software without specific prior written permission.
Kojto 170:19eb464bc2be 18 *
Kojto 170:19eb464bc2be 19 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
Kojto 170:19eb464bc2be 20 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
Kojto 170:19eb464bc2be 21 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
Kojto 170:19eb464bc2be 22 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
Kojto 170:19eb464bc2be 23 * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
Kojto 170:19eb464bc2be 24 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
Kojto 170:19eb464bc2be 25 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
Kojto 170:19eb464bc2be 26 * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
Kojto 170:19eb464bc2be 27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
Kojto 170:19eb464bc2be 28 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Kojto 170:19eb464bc2be 29 */
Kojto 170:19eb464bc2be 30
Kojto 170:19eb464bc2be 31 #include "fsl_common.h"
Kojto 170:19eb464bc2be 32 /* This is not needed for mbed */
Kojto 170:19eb464bc2be 33 #if 0
Kojto 170:19eb464bc2be 34 #include "fsl_debug_console.h"
Kojto 170:19eb464bc2be 35
Kojto 170:19eb464bc2be 36 #ifndef NDEBUG
Kojto 170:19eb464bc2be 37 #if (defined(__CC_ARM)) || (defined(__ICCARM__))
Kojto 170:19eb464bc2be 38 void __aeabi_assert(const char *failedExpr, const char *file, int line)
Kojto 170:19eb464bc2be 39 {
Kojto 170:19eb464bc2be 40 PRINTF("ASSERT ERROR \" %s \": file \"%s\" Line \"%d\" \n", failedExpr, file, line);
Kojto 170:19eb464bc2be 41 for (;;)
Kojto 170:19eb464bc2be 42 {
Kojto 170:19eb464bc2be 43 __asm("bkpt #0");
Kojto 170:19eb464bc2be 44 }
Kojto 170:19eb464bc2be 45 }
Kojto 170:19eb464bc2be 46 #elif(defined(__GNUC__))
Kojto 170:19eb464bc2be 47 void __assert_func(const char *file, int line, const char *func, const char *failedExpr)
Kojto 170:19eb464bc2be 48 {
Kojto 170:19eb464bc2be 49 PRINTF("ASSERT ERROR \" %s \": file \"%s\" Line \"%d\" function name \"%s\" \n", failedExpr, file, line, func);
Kojto 170:19eb464bc2be 50 for (;;)
Kojto 170:19eb464bc2be 51 {
Kojto 170:19eb464bc2be 52 __asm("bkpt #0");
Kojto 170:19eb464bc2be 53 }
Kojto 170:19eb464bc2be 54 }
Kojto 170:19eb464bc2be 55 #endif /* (defined(__CC_ARM)) || (defined (__ICCARM__)) */
Kojto 170:19eb464bc2be 56 #endif /* NDEBUG */
Kojto 170:19eb464bc2be 57 #endif
Kojto 170:19eb464bc2be 58 void InstallIRQHandler(IRQn_Type irq, uint32_t irqHandler)
Kojto 170:19eb464bc2be 59 {
Kojto 170:19eb464bc2be 60 /* Addresses for VECTOR_TABLE and VECTOR_RAM come from the linker file */
AnnaBridge 174:b96e65c34a4d 61 #if defined(__CC_ARM) || (defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050))
Kojto 170:19eb464bc2be 62 extern uint32_t Image$$VECTOR_ROM$$Base[];
Kojto 170:19eb464bc2be 63 extern uint32_t Image$$VECTOR_RAM$$Base[];
Kojto 170:19eb464bc2be 64 extern uint32_t Image$$RW_m_data$$Base[];
Kojto 170:19eb464bc2be 65
Kojto 170:19eb464bc2be 66 #define __VECTOR_TABLE Image$$VECTOR_ROM$$Base
Kojto 170:19eb464bc2be 67 #define __VECTOR_RAM Image$$VECTOR_RAM$$Base
Kojto 170:19eb464bc2be 68 #define __RAM_VECTOR_TABLE_SIZE (((uint32_t)Image$$RW_m_data$$Base - (uint32_t)Image$$VECTOR_RAM$$Base))
Kojto 170:19eb464bc2be 69 #elif defined(__ICCARM__)
Kojto 170:19eb464bc2be 70 extern uint32_t __RAM_VECTOR_TABLE_SIZE[];
Kojto 170:19eb464bc2be 71 extern uint32_t __VECTOR_TABLE[];
Kojto 170:19eb464bc2be 72 extern uint32_t __VECTOR_RAM[];
Kojto 170:19eb464bc2be 73 #elif defined(__GNUC__)
Kojto 170:19eb464bc2be 74 extern uint32_t __VECTOR_TABLE[];
Kojto 170:19eb464bc2be 75 extern uint32_t __VECTOR_RAM[];
Kojto 170:19eb464bc2be 76 extern uint32_t __RAM_VECTOR_TABLE_SIZE_BYTES[];
Kojto 170:19eb464bc2be 77 uint32_t __RAM_VECTOR_TABLE_SIZE = (uint32_t)(__RAM_VECTOR_TABLE_SIZE_BYTES);
Kojto 170:19eb464bc2be 78 #endif /* defined(__CC_ARM) */
Kojto 170:19eb464bc2be 79 uint32_t n;
Kojto 170:19eb464bc2be 80 uint32_t interrupts_disabled;
Kojto 170:19eb464bc2be 81
Kojto 170:19eb464bc2be 82 interrupts_disabled = __get_PRIMASK();
Kojto 170:19eb464bc2be 83 __disable_irq();
Kojto 170:19eb464bc2be 84 if (SCB->VTOR != (uint32_t)__VECTOR_RAM)
Kojto 170:19eb464bc2be 85 {
Kojto 170:19eb464bc2be 86 /* Copy the vector table from ROM to RAM */
Kojto 170:19eb464bc2be 87 for (n = 0; n < ((uint32_t)__RAM_VECTOR_TABLE_SIZE) / sizeof(uint32_t); n++)
Kojto 170:19eb464bc2be 88 {
Kojto 170:19eb464bc2be 89 __VECTOR_RAM[n] = __VECTOR_TABLE[n];
Kojto 170:19eb464bc2be 90 }
Kojto 170:19eb464bc2be 91 /* Point the VTOR to the position of vector table */
Kojto 170:19eb464bc2be 92 SCB->VTOR = (uint32_t)__VECTOR_RAM;
Kojto 170:19eb464bc2be 93 }
Kojto 170:19eb464bc2be 94
Kojto 170:19eb464bc2be 95 /* make sure the __VECTOR_RAM is noncachable */
Kojto 170:19eb464bc2be 96 __VECTOR_RAM[irq + 16] = irqHandler;
Kojto 170:19eb464bc2be 97
Kojto 170:19eb464bc2be 98 if (!interrupts_disabled) {
Kojto 170:19eb464bc2be 99 __enable_irq();
Kojto 170:19eb464bc2be 100 }
Kojto 170:19eb464bc2be 101 }
Kojto 170:19eb464bc2be 102 #ifndef CPU_QN908X
Kojto 170:19eb464bc2be 103 #if (defined(FSL_FEATURE_SOC_SYSCON_COUNT) && (FSL_FEATURE_SOC_SYSCON_COUNT > 0))
Kojto 170:19eb464bc2be 104
Kojto 170:19eb464bc2be 105 void EnableDeepSleepIRQ(IRQn_Type interrupt)
Kojto 170:19eb464bc2be 106 {
Kojto 170:19eb464bc2be 107 uint32_t index = 0;
Kojto 170:19eb464bc2be 108 uint32_t intNumber = (uint32_t)interrupt;
Kojto 170:19eb464bc2be 109 while (intNumber >= 32u)
Kojto 170:19eb464bc2be 110 {
Kojto 170:19eb464bc2be 111 index++;
Kojto 170:19eb464bc2be 112 intNumber -= 32u;
Kojto 170:19eb464bc2be 113 }
Kojto 170:19eb464bc2be 114
Kojto 170:19eb464bc2be 115 SYSCON->STARTERSET[index] = 1u << intNumber;
Kojto 170:19eb464bc2be 116 EnableIRQ(interrupt); /* also enable interrupt at NVIC */
Kojto 170:19eb464bc2be 117 }
Kojto 170:19eb464bc2be 118
Kojto 170:19eb464bc2be 119 void DisableDeepSleepIRQ(IRQn_Type interrupt)
Kojto 170:19eb464bc2be 120 {
Kojto 170:19eb464bc2be 121 uint32_t index = 0;
Kojto 170:19eb464bc2be 122 uint32_t intNumber = (uint32_t)interrupt;
Kojto 170:19eb464bc2be 123 while (intNumber >= 32u)
Kojto 170:19eb464bc2be 124 {
Kojto 170:19eb464bc2be 125 index++;
Kojto 170:19eb464bc2be 126 intNumber -= 32u;
Kojto 170:19eb464bc2be 127 }
Kojto 170:19eb464bc2be 128
Kojto 170:19eb464bc2be 129 DisableIRQ(interrupt); /* also disable interrupt at NVIC */
Kojto 170:19eb464bc2be 130 SYSCON->STARTERCLR[index] = 1u << intNumber;
Kojto 170:19eb464bc2be 131 }
Kojto 170:19eb464bc2be 132 #endif /* FSL_FEATURE_SOC_SYSCON_COUNT */
Kojto 170:19eb464bc2be 133 #else
Kojto 170:19eb464bc2be 134 void EnableDeepSleepIRQ(IRQn_Type interrupt)
Kojto 170:19eb464bc2be 135 {
Kojto 170:19eb464bc2be 136 uint32_t index = 0;
Kojto 170:19eb464bc2be 137 uint32_t intNumber = (uint32_t)interrupt;
Kojto 170:19eb464bc2be 138 while (intNumber >= 32u)
Kojto 170:19eb464bc2be 139 {
Kojto 170:19eb464bc2be 140 index++;
Kojto 170:19eb464bc2be 141 intNumber -= 32u;
Kojto 170:19eb464bc2be 142 }
Kojto 170:19eb464bc2be 143
Kojto 170:19eb464bc2be 144 /* SYSCON->STARTERSET[index] = 1u << intNumber; */
Kojto 170:19eb464bc2be 145 EnableIRQ(interrupt); /* also enable interrupt at NVIC */
Kojto 170:19eb464bc2be 146 }
Kojto 170:19eb464bc2be 147
Kojto 170:19eb464bc2be 148 void DisableDeepSleepIRQ(IRQn_Type interrupt)
Kojto 170:19eb464bc2be 149 {
Kojto 170:19eb464bc2be 150 uint32_t index = 0;
Kojto 170:19eb464bc2be 151 uint32_t intNumber = (uint32_t)interrupt;
Kojto 170:19eb464bc2be 152 while (intNumber >= 32u)
Kojto 170:19eb464bc2be 153 {
Kojto 170:19eb464bc2be 154 index++;
Kojto 170:19eb464bc2be 155 intNumber -= 32u;
Kojto 170:19eb464bc2be 156 }
Kojto 170:19eb464bc2be 157
Kojto 170:19eb464bc2be 158 DisableIRQ(interrupt); /* also disable interrupt at NVIC */
Kojto 170:19eb464bc2be 159 /* SYSCON->STARTERCLR[index] = 1u << intNumber; */
Kojto 170:19eb464bc2be 160 }
Kojto 170:19eb464bc2be 161 #endif /*CPU_QN908X */