From 517f179f8d7960836e339d80e2e2b92384ede78c Mon Sep 17 00:00:00 2001 From: Sebastien Lorquet Date: Tue, 17 May 2022 15:20:35 +0200 Subject: [PATCH] stm32h7: Adds the ability to choose the HSI divider, which must be indicated in board.h if used. --- arch/arm/src/stm32h7/stm32h7x3xx_rcc.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/arch/arm/src/stm32h7/stm32h7x3xx_rcc.c b/arch/arm/src/stm32h7/stm32h7x3xx_rcc.c index c6a5f457b8..9462ae2352 100644 --- a/arch/arm/src/stm32h7/stm32h7x3xx_rcc.c +++ b/arch/arm/src/stm32h7/stm32h7x3xx_rcc.c @@ -98,6 +98,10 @@ # define USE_PLL3 #endif +#if defined(STM32_BOARD_USEHSI) && !defined(STM32_BOARD_HSIDIV) +#error When HSI is used, you have to define STM32_BOARD_HSIDIV in board/include/board.h +#endif + /**************************************************************************** * Private Data ****************************************************************************/ @@ -600,6 +604,11 @@ void stm32_stdclockconfig(void) regval = getreg32(STM32_RCC_CR); regval |= RCC_CR_HSION; /* Enable HSI */ + + /* Set HSI predivider to board specific value */ + + regval |= STM32_BOARD_HSIDIV; + putreg32(regval, STM32_RCC_CR); /* Wait until the HSI is ready (or until a timeout elapsed) */