stm32/powerctrlboot: Add support for HSI at 8MHz on F0 MCUs.
For use with F0 MCUs that don't have HSI48. Select the clock source explicitly in mpconfigboard.h. On the NUCLEO_F091RC board use HSE bypass when HSE is chosen because the NUCLEO clock source is STLINK not a crystal.
This commit is contained in:
committed by
Damien George
parent
f16e4be3fa
commit
eb12fa3862
@@ -48,7 +48,7 @@ void SystemClock_Config(void) {
|
||||
RCC->CFGR = 0 << RCC_CFGR_PLLMUL_Pos | 3 << RCC_CFGR_PLLSRC_Pos; // PLL mult by 2, src = HSI48/PREDIV
|
||||
RCC->CFGR2 = 1; // Input clock divided by 2
|
||||
|
||||
#else
|
||||
#elif MICROPY_HW_CLK_USE_HSE
|
||||
// Use HSE and the PLL to get a 48MHz SYSCLK
|
||||
|
||||
#if MICROPY_HW_CLK_USE_BYPASS
|
||||
@@ -61,6 +61,18 @@ void SystemClock_Config(void) {
|
||||
RCC->CFGR = ((48000000 / HSE_VALUE) - 2) << RCC_CFGR_PLLMUL_Pos | 2 << RCC_CFGR_PLLSRC_Pos;
|
||||
RCC->CFGR2 = 0; // Input clock not divided
|
||||
|
||||
#elif MICROPY_HW_CLK_USE_HSI
|
||||
// Use the 8MHz internal oscillator and the PLL to get a 48MHz SYSCLK
|
||||
|
||||
RCC->CR |= RCC_CR_HSION;
|
||||
while ((RCC->CR & RCC_CR_HSIRDY) == 0) {
|
||||
// Wait for HSI to be ready
|
||||
}
|
||||
RCC->CFGR = 4 << RCC_CFGR_PLLMUL_Pos | 1 << RCC_CFGR_PLLSRC_Pos; // PLL mult by 6, src = HSI
|
||||
RCC->CFGR2 = 0; // Input clock not divided
|
||||
|
||||
#else
|
||||
#error System clock not specified
|
||||
#endif
|
||||
|
||||
RCC->CR |= RCC_CR_PLLON; // Turn PLL on
|
||||
|
||||
Reference in New Issue
Block a user