mirror of https://github.com/ARMmbed/mbed-os.git
In certain cases, the clock setting did not select HFXO, even though HFXO was requested in the board header.
Root cause: you cannot use a C-enum name in a #if compare, becaudse the preprocessor will replace all enum names with 0 (so all checks on HFXO/LFXO checked out regardless of the define).pull/1294/head
parent
376d6a73e3
commit
62d9adfb42
|
@ -32,12 +32,12 @@
|
|||
/* Clocks */
|
||||
|
||||
/* Clock definitions */
|
||||
#define LFXO cmuSelect_LFXO
|
||||
#define HFXO cmuSelect_HFXO
|
||||
#define LFRCO cmuSelect_LFRCO
|
||||
#define HFRCO cmuSelect_HFRCO
|
||||
#define LFXO 0
|
||||
#define HFXO 1
|
||||
#define LFRCO 2
|
||||
#define HFRCO 3
|
||||
#if !defined(_EFM32_GECKO_FAMILY)
|
||||
#define ULFRCO cmuSelect_ULFRCO
|
||||
#define ULFRCO 4
|
||||
#endif
|
||||
|
||||
/* Low Energy peripheral clock source.
|
||||
|
|
|
@ -32,12 +32,12 @@
|
|||
/* Clocks */
|
||||
|
||||
/* Clock definitions */
|
||||
#define LFXO cmuSelect_LFXO
|
||||
#define HFXO cmuSelect_HFXO
|
||||
#define LFRCO cmuSelect_LFRCO
|
||||
#define HFRCO cmuSelect_HFRCO
|
||||
#define LFXO 0
|
||||
#define HFXO 1
|
||||
#define LFRCO 2
|
||||
#define HFRCO 3
|
||||
#if !defined(_EFM32_GECKO_FAMILY)
|
||||
#define ULFRCO cmuSelect_ULFRCO
|
||||
#define ULFRCO 4
|
||||
#endif
|
||||
|
||||
/* Low Energy peripheral clock source.
|
||||
|
|
|
@ -32,12 +32,12 @@
|
|||
/* Clocks */
|
||||
|
||||
/* Clock definitions */
|
||||
#define LFXO cmuSelect_LFXO
|
||||
#define HFXO cmuSelect_HFXO
|
||||
#define LFRCO cmuSelect_LFRCO
|
||||
#define HFRCO cmuSelect_HFRCO
|
||||
#define LFXO 0
|
||||
#define HFXO 1
|
||||
#define LFRCO 2
|
||||
#define HFRCO 3
|
||||
#if !defined(_EFM32_GECKO_FAMILY)
|
||||
#define ULFRCO cmuSelect_ULFRCO
|
||||
#define ULFRCO 4
|
||||
#endif
|
||||
|
||||
/* Low Energy peripheral clock source.
|
||||
|
|
|
@ -32,12 +32,12 @@
|
|||
/* Clocks */
|
||||
|
||||
/* Clock definitions */
|
||||
#define LFXO cmuSelect_LFXO
|
||||
#define HFXO cmuSelect_HFXO
|
||||
#define LFRCO cmuSelect_LFRCO
|
||||
#define HFRCO cmuSelect_HFRCO
|
||||
#define LFXO 0
|
||||
#define HFXO 1
|
||||
#define LFRCO 2
|
||||
#define HFRCO 3
|
||||
#if !defined(_EFM32_GECKO_FAMILY)
|
||||
#define ULFRCO cmuSelect_ULFRCO
|
||||
#define ULFRCO 4
|
||||
#endif
|
||||
|
||||
/* Low Energy peripheral clock source.
|
||||
|
|
|
@ -29,12 +29,12 @@
|
|||
/* Clocks */
|
||||
|
||||
/* Clock definitions */
|
||||
#define LFXO cmuSelect_LFXO
|
||||
#define HFXO cmuSelect_HFXO
|
||||
#define LFRCO cmuSelect_LFRCO
|
||||
#define HFRCO cmuSelect_HFRCO
|
||||
#define LFXO 0
|
||||
#define HFXO 1
|
||||
#define LFRCO 2
|
||||
#define HFRCO 3
|
||||
#if !defined(_EFM32_GECKO_FAMILY)
|
||||
#define ULFRCO cmuSelect_ULFRCO
|
||||
#define ULFRCO 4
|
||||
#endif
|
||||
|
||||
/* Low Energy peripheral clock source.
|
||||
|
|
|
@ -34,10 +34,12 @@ void mbed_sdk_init()
|
|||
|
||||
/* Set up the clock sources for this chip */
|
||||
#if( CORE_CLOCK_SOURCE == HFXO)
|
||||
CMU_ClockSelectSet(cmuClock_HF, HFXO);
|
||||
CMU_ClockSelectSet(cmuClock_HF, cmuSelect_HFXO);
|
||||
CMU_ClockSelectSet(cmuClock_HFPER, cmuSelect_HFXO);
|
||||
SystemHFXOClockSet(HFXO_FREQUENCY);
|
||||
#elif( CORE_CLOCK_SOURCE == HFRCO)
|
||||
CMU_ClockSelectSet(cmuClock_HF, HFRCO);
|
||||
CMU_ClockSelectSet(cmuClock_HF, cmuSelect_HFRCO);
|
||||
CMU_ClockSelectSet(cmuClock_HFPER, cmuSelect_HFRCO);
|
||||
CMU_HFRCOBandSet(HFRCO_FREQUENCY);
|
||||
#else
|
||||
#error "Core clock selection not valid (mbed_overrides.c)"
|
||||
|
@ -47,7 +49,7 @@ void mbed_sdk_init()
|
|||
|
||||
#if( LOW_ENERGY_CLOCK_SOURCE == LFXO )
|
||||
#ifdef CMU_LFACLKSEL_REG
|
||||
CMU_ClockSelectSet(cmuClock_LFA, LFXO);
|
||||
CMU_ClockSelectSet(cmuClock_LFA, cmuSelect_LFXO);
|
||||
#endif
|
||||
#ifdef CMU_LFBCLKSEL_REG
|
||||
/* cmuClock_LFB (to date) only has LEUART peripherals.
|
||||
|
@ -58,31 +60,31 @@ void mbed_sdk_init()
|
|||
//CMU_ClockSelectSet(cmuClock_LFB, LFXO);
|
||||
#endif
|
||||
#ifdef CMU_LFECLKSEL_REG
|
||||
CMU_ClockSelectSet(cmuClock_LFE, LFXO);
|
||||
CMU_ClockSelectSet(cmuClock_LFE, cmuSelect_LFXO);
|
||||
#endif
|
||||
SystemLFXOClockSet(LFXO_FREQUENCY);
|
||||
|
||||
#elif( LOW_ENERGY_CLOCK_SOURCE == LFRCO )
|
||||
#ifdef CMU_LFACLKSEL_REG
|
||||
CMU_ClockSelectSet(cmuClock_LFA, LFRCO);
|
||||
CMU_ClockSelectSet(cmuClock_LFA, cmuSelect_LFRCO);
|
||||
#endif
|
||||
#ifdef CMU_LFBCLKSEL_REG
|
||||
//CMU_ClockSelectSet(cmuClock_LFB, LFRCO);
|
||||
#endif
|
||||
#ifdef CMU_LFECLKSEL_REG
|
||||
CMU_ClockSelectSet(cmuClock_LFE, LFRCO);
|
||||
CMU_ClockSelectSet(cmuClock_LFE, cmuSelect_LFRCO);
|
||||
#endif
|
||||
CMU_HFRCOBandSet(HFRCO_FREQUENCY);
|
||||
|
||||
#elif( LOW_ENERGY_CLOCK_SOURCE == ULFRCO)
|
||||
#ifdef CMU_LFACLKSEL_REG
|
||||
CMU_ClockSelectSet(cmuClock_LFA, ULFRCO);
|
||||
CMU_ClockSelectSet(cmuClock_LFA, cmuSelect_ULFRCO);
|
||||
#endif
|
||||
#ifdef CMU_LFBCLKSEL_REG
|
||||
CMU_ClockSelectSet(cmuClock_LFB, ULFRCO);
|
||||
CMU_ClockSelectSet(cmuClock_LFB, cmuSelect_ULFRCO);
|
||||
#endif
|
||||
#ifdef CMU_LFECLKSEL_REG
|
||||
CMU_ClockSelectSet(cmuClock_LFE, ULFRCO);
|
||||
CMU_ClockSelectSet(cmuClock_LFE, cmuSelect_ULFRCO);
|
||||
#endif
|
||||
#else
|
||||
#error "Low energy clock selection not valid"
|
||||
|
|
Loading…
Reference in New Issue