diff --git a/lib/stm32/l1/rcc.c b/lib/stm32/l1/rcc.c index 0bf0fa35..7a7d8ccb 100644 --- a/lib/stm32/l1/rcc.c +++ b/lib/stm32/l1/rcc.c @@ -498,9 +498,14 @@ void rcc_clock_setup_hsi(const clock_scale_t *clock) void rcc_clock_setup_pll(const clock_scale_t *clock) { - /* Enable internal high-speed oscillator. */ - rcc_osc_on(HSI); - rcc_wait_for_osc_ready(HSI); + /* Turn on the appropriate source for the PLL */ + if (clock->pll_source == RCC_CFGR_PLLSRC_HSE_CLK) { + rcc_osc_on(HSE); + rcc_wait_for_osc_ready(HSE); + } else { + rcc_osc_on(HSI); + rcc_wait_for_osc_ready(HSI); + } /* * Set prescalers for AHB, ADC, ABP1, ABP2.