Skip to content

Commit e4c2386

Browse files
committed
Fix a bug preventing LEUART from being clocked correctly
1 parent 35a4ba5 commit e4c2386

File tree

3 files changed

+8
-1
lines changed

3 files changed

+8
-1
lines changed

libraries/mbed/targets/hal/TARGET_Silicon_Labs/TARGET_EFM32/gpio_object.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
#define MBED_GPIO_OBJECT_H
1818

1919
#include "em_gpio.h"
20+
#include "PinNames.h"
2021

2122
#ifdef __cplusplus
2223
extern "C" {

libraries/mbed/targets/hal/TARGET_Silicon_Labs/TARGET_EFM32/mbed_overrides.c

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,12 @@ void mbed_sdk_init()
5050
CMU_ClockSelectSet(cmuClock_LFA, LFXO);
5151
#endif
5252
#ifdef CMU_LFBCLKSEL_REG
53-
CMU_ClockSelectSet(cmuClock_LFB, LFXO);
53+
/* cmuClock_LFB (to date) only has LEUART peripherals.
54+
* Do NOT set it up here, as LEUARTs might have been initialized
55+
* before this code is called. (Limitation of the override mechanism of ARMCC)
56+
*/
57+
//TODO: Look for a more elegant fix.
58+
//CMU_ClockSelectSet(cmuClock_LFB, LFXO);
5459
#endif
5560
#ifdef CMU_LFECLKSEL_REG
5661
CMU_ClockSelectSet(cmuClock_LFE, LFXO);

libraries/mbed/targets/hal/TARGET_Silicon_Labs/TARGET_EFM32/serial_api.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -407,6 +407,7 @@ void serial_init(serial_t *obj, PinName tx, PinName rx)
407407
if(LEUART_REF_VALID(obj->serial.periph.leuart)) {
408408
// Set up LEUART clock tree to use high-speed clock)
409409
CMU_ClockSelectSet(cmuClock_LFB, cmuSelect_CORELEDIV2);
410+
CMU_ClockEnable(cmuClock_LFB, true);
410411
CMU_ClockSelectSet(serial_get_clock(obj), cmuSelect_CORELEDIV2);
411412
}
412413

0 commit comments

Comments
 (0)