mbed lib with startup delay fixed for Nucleo401RE
Fork of mbed-src by
Revision 138:ec7ee4660c49, committed 2014-03-25
- Comitter:
- mbed_official
- Date:
- Tue Mar 25 17:45:07 2014 +0000
- Parent:
- 137:f9a97811e98c
- Child:
- 139:e3413eddde57
- Commit message:
- Synchronized with git revision 62a0f0ac13d7ec0b518633d03cbacc95b0e32851
Full URL: https://github.com/mbedmicro/mbed/commit/62a0f0ac13d7ec0b518633d03cbacc95b0e32851/
[NUCLEO_F302R8] Use mbed_sdk_init() to update the SystemCoreClock variab...
Changed in this revision
--- a/targets/cmsis/TARGET_STM/TARGET_NUCLEO_F302R8/TOOLCHAIN_ARM_MICRO/stm32f302x8.sct Tue Mar 25 13:45:07 2014 +0000 +++ b/targets/cmsis/TARGET_STM/TARGET_NUCLEO_F302R8/TOOLCHAIN_ARM_MICRO/stm32f302x8.sct Tue Mar 25 17:45:07 2014 +0000 @@ -37,8 +37,7 @@ } ; 98 vectors (16 core + 82 peripheral) * 4 bytes = 392 bytes to reserve (0x188) - ; + 4 more bytes reserved for the SystemCoreClock variable - RW_IRAM1 (0x20000000+(0x188+4)) (0x4000-(0x188+4)) { ; RW data + RW_IRAM1 (0x20000000+0x188) (0x4000-0x188) { ; RW data .ANY (+RW +ZI) }
--- a/targets/cmsis/TARGET_STM/TARGET_NUCLEO_F302R8/TOOLCHAIN_ARM_STD/stm32f302x8.sct Tue Mar 25 13:45:07 2014 +0000 +++ b/targets/cmsis/TARGET_STM/TARGET_NUCLEO_F302R8/TOOLCHAIN_ARM_STD/stm32f302x8.sct Tue Mar 25 17:45:07 2014 +0000 @@ -37,8 +37,7 @@ } ; 98 vectors (16 core + 82 peripheral) * 4 bytes = 392 bytes to reserve (0x188) - ; + 4 more bytes reserved for the SystemCoreClock variable - RW_IRAM1 (0x20000000+(0x188+4)) (0x4000-(0x188+4)) { ; RW data + RW_IRAM1 (0x20000000+0x188) (0x4000-0x188) { ; RW data .ANY (+RW +ZI) }
--- a/targets/cmsis/TARGET_STM/TARGET_NUCLEO_F302R8/system_stm32f30x.c Tue Mar 25 13:45:07 2014 +0000 +++ b/targets/cmsis/TARGET_STM/TARGET_NUCLEO_F302R8/system_stm32f30x.c Tue Mar 25 17:45:07 2014 +0000 @@ -141,10 +141,7 @@ * @{ */ -// [TODO] Do the same for other compilers -// Warning: the RAM is initialized AFTER the SetSysClock function is called. -// This variable must be placed outside the initialized section (see scatter file). -uint32_t SystemCoreClock __attribute__((at(0x20000188))) = 64000000; /* Default with HSI. Will be updated if HSE is used */ +uint32_t SystemCoreClock = 64000000; /* Default with HSI. Will be updated if HSE is used */ __I uint8_t AHBPrescTable[16] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 6, 7, 8, 9}; @@ -361,11 +358,15 @@ __IO uint32_t HSEStatus = 0; /* Bypass HSE: can be done only if HSE is OFF */ + RCC->CR &= ((uint32_t)~RCC_CR_HSEON); /* To be sure HSE is OFF */ if (bypass != 0) { - RCC->CR &= ((uint32_t)~RCC_CR_HSEON); /* To be sure HSE is OFF */ RCC->CR |= ((uint32_t)RCC_CR_HSEBYP); } + else + { + RCC->CR &= ((uint32_t)~RCC_CR_HSEBYP); + } /* Enable HSE */ RCC->CR |= ((uint32_t)RCC_CR_HSEON); @@ -412,7 +413,6 @@ { } - SystemCoreClock = 72000000; return 1; // OK } else @@ -460,7 +460,6 @@ { } - SystemCoreClock = 64000000; return 1; // OK }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/targets/hal/TARGET_STM/TARGET_NUCLEO_F302R8/mbed_overrides.c Tue Mar 25 17:45:07 2014 +0000 @@ -0,0 +1,35 @@ +/* mbed Microcontroller Library + * Copyright (c) 2014, STMicroelectronics + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. Neither the name of STMicroelectronics nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +extern void SystemCoreClockUpdate(void); + +// This function is called after RAM initialization and before main. +void mbed_sdk_init() { + // Update the SystemCoreClock variable. + SystemCoreClockUpdate(); +}