mirror of https://github.com/ARMmbed/mbed-os.git
[NUCLEO_F302R8] Use mbed_sdk_init() to update the SystemCoreClock variable.
Definitely the best solution...pull/234/head
parent
e2ab4b9343
commit
8f523daa69
|
@ -37,8 +37,7 @@ LR_IROM1 0x08000000 0x10000 { ; load region size_region
|
||||||
}
|
}
|
||||||
|
|
||||||
; 98 vectors (16 core + 82 peripheral) * 4 bytes = 392 bytes to reserve (0x188)
|
; 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) (0x4000-0x188) { ; RW data
|
||||||
RW_IRAM1 (0x20000000+(0x188+4)) (0x4000-(0x188+4)) { ; RW data
|
|
||||||
.ANY (+RW +ZI)
|
.ANY (+RW +ZI)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -37,8 +37,7 @@ LR_IROM1 0x08000000 0x10000 { ; load region size_region
|
||||||
}
|
}
|
||||||
|
|
||||||
; 98 vectors (16 core + 82 peripheral) * 4 bytes = 392 bytes to reserve (0x188)
|
; 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) (0x4000-0x188) { ; RW data
|
||||||
RW_IRAM1 (0x20000000+(0x188+4)) (0x4000-(0x188+4)) { ; RW data
|
|
||||||
.ANY (+RW +ZI)
|
.ANY (+RW +ZI)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -141,10 +141,7 @@
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// [TODO] Do the same for other compilers
|
uint32_t SystemCoreClock = 64000000; /* Default with HSI. Will be updated if HSE is used */
|
||||||
// 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 */
|
|
||||||
|
|
||||||
__I uint8_t AHBPrescTable[16] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 6, 7, 8, 9};
|
__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 @@ uint8_t SetSysClock_PLL_HSE(uint8_t bypass)
|
||||||
__IO uint32_t HSEStatus = 0;
|
__IO uint32_t HSEStatus = 0;
|
||||||
|
|
||||||
/* Bypass HSE: can be done only if HSE is OFF */
|
/* 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)
|
if (bypass != 0)
|
||||||
{
|
{
|
||||||
RCC->CR &= ((uint32_t)~RCC_CR_HSEON); /* To be sure HSE is OFF */
|
|
||||||
RCC->CR |= ((uint32_t)RCC_CR_HSEBYP);
|
RCC->CR |= ((uint32_t)RCC_CR_HSEBYP);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
RCC->CR &= ((uint32_t)~RCC_CR_HSEBYP);
|
||||||
|
}
|
||||||
|
|
||||||
/* Enable HSE */
|
/* Enable HSE */
|
||||||
RCC->CR |= ((uint32_t)RCC_CR_HSEON);
|
RCC->CR |= ((uint32_t)RCC_CR_HSEON);
|
||||||
|
@ -412,7 +413,6 @@ uint8_t SetSysClock_PLL_HSE(uint8_t bypass)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
SystemCoreClock = 72000000;
|
|
||||||
return 1; // OK
|
return 1; // OK
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -460,7 +460,6 @@ uint8_t SetSysClock_PLL_HSI(void)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
SystemCoreClock = 64000000;
|
|
||||||
return 1; // OK
|
return 1; // OK
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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();
|
||||||
|
}
|
Loading…
Reference in New Issue