From 86a68db207807bcbb2b9aacfabb9e9a6c78fca87 Mon Sep 17 00:00:00 2001 From: Ralf Doering Date: Sat, 31 Oct 2026 12:17:48 +0100 Subject: [PATCH] fix: add a fallback HSI clock config for Nucleo F030R8 Allow boards without ST-LINK MCO, including MB1136 C-01 in its factory-default wiring, to use HSI / 2 * 12 at 48 MHz. These boards cannot start sketches with the existing HSE bypass configuration. Co-Authored-By: Frederic Pillon Signed-off-by: Ralf Doering --- .../STM32F0xx/F030R8T/variant_NUCLEO_F030R8.cpp | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/variants/STM32F0xx/F030R8T/variant_NUCLEO_F030R8.cpp b/variants/STM32F0xx/F030R8T/variant_NUCLEO_F030R8.cpp index e8aa39d827..39c9b786bd 100644 --- a/variants/STM32F0xx/F030R8T/variant_NUCLEO_F030R8.cpp +++ b/variants/STM32F0xx/F030R8T/variant_NUCLEO_F030R8.cpp @@ -113,6 +113,7 @@ WEAK void SystemClock_Config(void) { RCC_OscInitTypeDef RCC_OscInitStruct = {}; RCC_ClkInitTypeDef RCC_ClkInitStruct = {}; + HAL_StatusTypeDef ret = HAL_OK; /* * Initializes the RCC Oscillators according to the specified parameters * in the RCC_OscInitTypeDef structure. @@ -123,7 +124,19 @@ WEAK void SystemClock_Config(void) RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL6; RCC_OscInitStruct.PLL.PREDIV = RCC_PREDIV_DIV1; - if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) { + ret = HAL_RCC_OscConfig(&RCC_OscInitStruct); + if (ret == HAL_TIMEOUT) { + /* Try HSI when no external clock is connected, e.g. MB1136 C-01. */ + /* HSI 8 MHz / 2 * 12 = 48 MHz. */ + RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI; + RCC_OscInitStruct.HSIState = RCC_HSI_ON; + RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT; + RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; + RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI; + RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL12; + ret = HAL_RCC_OscConfig(&RCC_OscInitStruct); + } + if (ret != HAL_OK) { Error_Handler(); } /* Initializes the CPU, AHB and APB buses clocks */