summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZixun LI <[email protected]>2026-06-27 14:37:51 +0200
committerGitHub <[email protected]>2026-06-27 14:37:51 +0200
commitc1e529fc02eb6e771957077870450abce14c7f0b (patch)
tree939a291b424e729ff5f2719236c74e1d02d9dd57
parent0a25cc27d7d3699536f6df01e80af3eb0423ce58 (diff)
parentdd5b2b5b5b55fb366c34cd934b40fc35fea97d1b (diff)
Merge pull request #3737 from grunzasr/Add_NUCLEO_H533RE
Add ST board NUCLEO_H533RE
-rw-r--r--docs/reference/boards.rst1
-rw-r--r--hw/bsp/BoardPresets.json66
-rw-r--r--hw/bsp/stm32h5/boards/stm32h503nucleo/board.h2
-rw-r--r--hw/bsp/stm32h5/boards/stm32h533nucleo/board.cmake12
-rw-r--r--hw/bsp/stm32h5/boards/stm32h533nucleo/board.h148
-rw-r--r--hw/bsp/stm32h5/boards/stm32h533nucleo/board.mk9
-rw-r--r--hw/bsp/stm32h5/boards/stm32h563nucleo/board.h10
-rw-r--r--hw/bsp/stm32h5/boards/stm32h573i_dk/board.h18
-rw-r--r--hw/bsp/stm32h5/family.c6
-rw-r--r--hw/bsp/stm32h5/linker/STM32H503xx_FLASH.ld1
-rw-r--r--hw/bsp/stm32h5/linker/STM32H523xx_FLASH.ld1
-rw-r--r--hw/bsp/stm32h5/linker/STM32H533xx_FLASH.ld1
-rw-r--r--hw/bsp/stm32h5/linker/STM32H562xx_FLASH.ld1
-rw-r--r--hw/bsp/stm32h5/linker/STM32H563xx_FLASH.ld1
-rw-r--r--hw/bsp/stm32h5/linker/STM32H573xx_FLASH.ld1
-rwxr-xr-xtools/get_deps.py2
16 files changed, 265 insertions, 15 deletions
diff --git a/docs/reference/boards.rst b/docs/reference/boards.rst
index 8a83496a4..8acad3c45 100644
--- a/docs/reference/boards.rst
+++ b/docs/reference/boards.rst
@@ -296,6 +296,7 @@ b_g474e_dpow1 STM32 B-G474E-DPOW1 Discovery kit stm32g4 https://www.s
stm32g474nucleo STM32 G474 Nucleo stm32g4 https://www.st.com/en/evaluation-tools/nucleo-g474re.html
stm32g491nucleo STM32 G491 Nucleo stm32g4 https://www.st.com/en/evaluation-tools/nucleo-g491re.html
stm32h503nucleo STM32 H503 Nucleo stm32h5 https://www.st.com/en/evaluation-tools/nucleo-h503rb.html
+stm32h533nucleo STM32 H533 Nucleo stm32h5 https://www.st.com/en/evaluation-tools/nucleo-h533re.html
stm32h563nucleo STM32 H563 Nucleo stm32h5 https://www.st.com/en/evaluation-tools/nucleo-h563zi.html
stm32h573i_dk STM32 H573i Discovery stm32h5 https://www.st.com/en/evaluation-tools/stm32h573i-dk.html
daisyseed Daisy Seed stm32h7 https://electro-smith.com/products/daisy-seed
diff --git a/hw/bsp/BoardPresets.json b/hw/bsp/BoardPresets.json
index 2ad940caf..93a8f2c32 100644
--- a/hw/bsp/BoardPresets.json
+++ b/hw/bsp/BoardPresets.json
@@ -143,6 +143,10 @@
"inherits": "default"
},
{
+ "name": "ch582m_evt",
+ "inherits": "default"
+ },
+ {
"name": "circuitplayground_bluefruit",
"inherits": "default"
},
@@ -735,6 +739,10 @@
"inherits": "default"
},
{
+ "name": "stm32h533nucleo",
+ "inherits": "default"
+ },
+ {
"name": "stm32h563nucleo",
"inherits": "default"
},
@@ -879,6 +887,10 @@
"inherits": "default"
},
{
+ "name": "yd-ch582m",
+ "inherits": "default"
+ },
+ {
"name": "adafruit_feather_esp32_v2",
"inherits": "default single config"
},
@@ -1121,6 +1133,11 @@
"configurePreset": "ch32v307v_r1_1v0"
},
{
+ "name": "ch582m_evt",
+ "description": "Build preset for the ch582m_evt board",
+ "configurePreset": "ch582m_evt"
+ },
+ {
"name": "circuitplayground_bluefruit",
"description": "Build preset for the circuitplayground_bluefruit board",
"configurePreset": "circuitplayground_bluefruit"
@@ -1906,6 +1923,11 @@
"configurePreset": "stm32h503nucleo"
},
{
+ "name": "stm32h533nucleo",
+ "description": "Build preset for the stm32h533nucleo board",
+ "configurePreset": "stm32h533nucleo"
+ },
+ {
"name": "stm32h563nucleo",
"description": "Build preset for the stm32h563nucleo board",
"configurePreset": "stm32h563nucleo"
@@ -2084,6 +2106,11 @@
"name": "xmc4700_relax",
"description": "Build preset for the xmc4700_relax board",
"configurePreset": "xmc4700_relax"
+ },
+ {
+ "name": "yd-ch582m",
+ "description": "Build preset for the yd-ch582m board",
+ "configurePreset": "yd-ch582m"
}
],
"workflowPresets": [
@@ -2556,6 +2583,19 @@
]
},
{
+ "name": "ch582m_evt",
+ "steps": [
+ {
+ "type": "configure",
+ "name": "ch582m_evt"
+ },
+ {
+ "type": "build",
+ "name": "ch582m_evt"
+ }
+ ]
+ },
+ {
"name": "circuitplayground_bluefruit",
"steps": [
{
@@ -4597,6 +4637,19 @@
]
},
{
+ "name": "stm32h533nucleo",
+ "steps": [
+ {
+ "type": "configure",
+ "name": "stm32h533nucleo"
+ },
+ {
+ "type": "build",
+ "name": "stm32h533nucleo"
+ }
+ ]
+ },
+ {
"name": "stm32h563nucleo",
"steps": [
{
@@ -5063,6 +5116,19 @@
"name": "xmc4700_relax"
}
]
+ },
+ {
+ "name": "yd-ch582m",
+ "steps": [
+ {
+ "type": "configure",
+ "name": "yd-ch582m"
+ },
+ {
+ "type": "build",
+ "name": "yd-ch582m"
+ }
+ ]
}
]
}
diff --git a/hw/bsp/stm32h5/boards/stm32h503nucleo/board.h b/hw/bsp/stm32h5/boards/stm32h503nucleo/board.h
index 9dd2b0466..79ae4aebf 100644
--- a/hw/bsp/stm32h5/boards/stm32h503nucleo/board.h
+++ b/hw/bsp/stm32h5/boards/stm32h503nucleo/board.h
@@ -37,6 +37,8 @@
extern "C" {
#endif
+#define UART_ID 3
+
#define PINID_LED 0
#define PINID_BUTTON 1
#define PINID_UART_TX 2
diff --git a/hw/bsp/stm32h5/boards/stm32h533nucleo/board.cmake b/hw/bsp/stm32h5/boards/stm32h533nucleo/board.cmake
new file mode 100644
index 000000000..79157cc86
--- /dev/null
+++ b/hw/bsp/stm32h5/boards/stm32h533nucleo/board.cmake
@@ -0,0 +1,12 @@
+set(MCU_VARIANT stm32h533xx)
+set(JLINK_DEVICE stm32h533re)
+
+function(update_board TARGET)
+ target_compile_definitions(${TARGET} PUBLIC
+ STM32H533xx
+ HSE_VALUE=24000000
+ )
+ target_compile_definitions(${BOARD_TARGET} PUBLIC
+ CFG_EXAMPLE_VIDEO_READONLY
+ )
+endfunction()
diff --git a/hw/bsp/stm32h5/boards/stm32h533nucleo/board.h b/hw/bsp/stm32h5/boards/stm32h533nucleo/board.h
new file mode 100644
index 000000000..13d757327
--- /dev/null
+++ b/hw/bsp/stm32h5/boards/stm32h533nucleo/board.h
@@ -0,0 +1,148 @@
+/*
+ * The MIT License (MIT)
+ *
+ * Copyright (c) 2020, Ha Thach (tinyusb.org)
+ * Copyright (c) 2023, HiFiPhile
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ *
+ * This file is part of the TinyUSB stack.
+ *
+ */
+
+/* metadata:
+ name: STM32 H533 Nucleo
+ url: https://www.st.com/en/evaluation-tools/nucleo-h533re.html
+*/
+
+#ifndef BOARD_H_
+#define BOARD_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define UART_ID 2
+
+#define PINID_LED 0
+#define PINID_BUTTON 1
+#define PINID_UART_TX 2
+#define PINID_UART_RX 3
+
+static board_pindef_t board_pindef[] = {
+ { // LED
+ .port = GPIOA,
+ .pin_init = { .Pin = GPIO_PIN_5, .Mode = GPIO_MODE_OUTPUT_PP, .Pull = GPIO_NOPULL, .Speed = GPIO_SPEED_FREQ_HIGH, .Alternate = 0 },
+ .active_state = 1
+ },
+ { // Button
+ .port = GPIOC,
+ .pin_init = { .Pin = GPIO_PIN_13, .Mode = GPIO_MODE_INPUT, .Pull = GPIO_PULLDOWN, .Speed = GPIO_SPEED_FREQ_HIGH, .Alternate = 0 },
+ .active_state = 1
+ },
+ { // UART TX
+ .port = GPIOA,
+ .pin_init = { .Pin = GPIO_PIN_2, .Mode = GPIO_MODE_AF_PP, .Pull = GPIO_PULLUP, .Speed = GPIO_SPEED_FREQ_HIGH, .Alternate = GPIO_AF7_USART2 },
+ .active_state = 0
+ },
+ { // UART RX
+ .port = GPIOA,
+ .pin_init = { .Pin = GPIO_PIN_3, .Mode = GPIO_MODE_AF_PP, .Pull = GPIO_PULLUP, .Speed = GPIO_SPEED_FREQ_HIGH, .Alternate = GPIO_AF7_USART2 },
+ .active_state = 0
+ },
+};
+
+//--------------------------------------------------------------------+
+// RCC Clock
+//--------------------------------------------------------------------+
+static inline void SystemClock_Config(void) {
+ RCC_OscInitTypeDef RCC_OscInitStruct = {0};
+ RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
+
+ /** Configure the main internal regulator output voltage
+ */
+ __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE0);
+
+ while(!__HAL_PWR_GET_FLAG(PWR_FLAG_VOSRDY)) {}
+
+ /** Initializes the RCC Oscillators according to the specified parameters
+ * in the RCC_OscInitTypeDef structure.
+ */
+ RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI48|RCC_OSCILLATORTYPE_HSE;
+ RCC_OscInitStruct.HSEState = RCC_HSE_ON;
+ RCC_OscInitStruct.HSI48State = RCC_HSI48_ON;
+ RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
+ RCC_OscInitStruct.PLL.PLLSource = RCC_PLL1_SOURCE_HSE;
+ RCC_OscInitStruct.PLL.PLLM = 12;
+ RCC_OscInitStruct.PLL.PLLN = 250;
+ RCC_OscInitStruct.PLL.PLLP = 2;
+ RCC_OscInitStruct.PLL.PLLQ = 2;
+ RCC_OscInitStruct.PLL.PLLR = 2;
+ RCC_OscInitStruct.PLL.PLLRGE = RCC_PLL1_VCIRANGE_1;
+ RCC_OscInitStruct.PLL.PLLVCOSEL = RCC_PLL1_VCORANGE_WIDE;
+ RCC_OscInitStruct.PLL.PLLFRACN = 0;
+ HAL_RCC_OscConfig(&RCC_OscInitStruct);
+
+ /** Initializes the CPU, AHB and APB buses clocks
+ */
+ RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
+ |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2
+ |RCC_CLOCKTYPE_PCLK3;
+ RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
+ RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
+ RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
+ RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
+ RCC_ClkInitStruct.APB3CLKDivider = RCC_HCLK_DIV1;
+ HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_5);
+
+ // Configure CRS clock source
+ __HAL_RCC_CRS_CLK_ENABLE();
+ RCC_CRSInitTypeDef RCC_CRSInitStruct = {0};
+ RCC_CRSInitStruct.Prescaler = RCC_CRS_SYNC_DIV1;
+ RCC_CRSInitStruct.Source = RCC_CRS_SYNC_SOURCE_USB;
+ RCC_CRSInitStruct.Polarity = RCC_CRS_SYNC_POLARITY_RISING;
+ RCC_CRSInitStruct.ReloadValue = __HAL_RCC_CRS_RELOADVALUE_CALCULATE(48000000, 1000);
+ RCC_CRSInitStruct.ErrorLimitValue = 34;
+ RCC_CRSInitStruct.HSI48CalibrationValue = 32;
+ HAL_RCCEx_CRSConfig(&RCC_CRSInitStruct);
+
+ /* Select HSI48 as USB clock source */
+ RCC_PeriphCLKInitTypeDef usb_clk = {0 };
+ usb_clk.PeriphClockSelection = RCC_PERIPHCLK_USB;
+ usb_clk.UsbClockSelection = RCC_USBCLKSOURCE_HSI48;
+ HAL_RCCEx_PeriphCLKConfig(&usb_clk);
+
+ /* Peripheral clock enable */
+ __HAL_RCC_USB_CLK_ENABLE();
+}
+
+static inline void board_init2(void) {
+ // Empty for this board
+}
+
+void board_vbus_set(uint8_t rhport, bool state) {
+ (void) rhport;
+ (void) state;
+}
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* BOARD_H_ */
diff --git a/hw/bsp/stm32h5/boards/stm32h533nucleo/board.mk b/hw/bsp/stm32h5/boards/stm32h533nucleo/board.mk
new file mode 100644
index 000000000..7b5a3486d
--- /dev/null
+++ b/hw/bsp/stm32h5/boards/stm32h533nucleo/board.mk
@@ -0,0 +1,9 @@
+MCU_VARIANT = stm32h533xx
+
+CFLAGS += \
+ -DSTM32H533xx \
+ -DHSE_VALUE=24000000 \
+ -DCFG_EXAMPLE_VIDEO_READONLY \
+
+# For flash-jlink target
+JLINK_DEVICE = stm32h533re
diff --git a/hw/bsp/stm32h5/boards/stm32h563nucleo/board.h b/hw/bsp/stm32h5/boards/stm32h563nucleo/board.h
index 20c91f606..18c13017a 100644
--- a/hw/bsp/stm32h5/boards/stm32h563nucleo/board.h
+++ b/hw/bsp/stm32h5/boards/stm32h563nucleo/board.h
@@ -37,6 +37,8 @@
extern "C" {
#endif
+#define UART_ID 3
+
#define PINID_LED 0
#define PINID_BUTTON 1
#define PINID_UART_TX 2
@@ -54,13 +56,13 @@ static board_pindef_t board_pindef[] = {
.active_state = 0
},
{ // UART TX
- .port = GPIOA,
- .pin_init = { .Pin = GPIO_PIN_9, .Mode = GPIO_MODE_AF_PP, .Pull = GPIO_PULLUP, .Speed = GPIO_SPEED_FREQ_HIGH, .Alternate = GPIO_AF7_USART1 },
+ .port = GPIOD,
+ .pin_init = { .Pin = GPIO_PIN_8, .Mode = GPIO_MODE_AF_PP, .Pull = GPIO_PULLUP, .Speed = GPIO_SPEED_FREQ_HIGH, .Alternate = GPIO_AF7_USART3 },
.active_state = 0
},
{ // UART RX
- .port = GPIOA,
- .pin_init = { .Pin = GPIO_PIN_10, .Mode = GPIO_MODE_AF_PP, .Pull = GPIO_PULLUP, .Speed = GPIO_SPEED_FREQ_HIGH, .Alternate = GPIO_AF7_USART1 },
+ .port = GPIOD,
+ .pin_init = { .Pin = GPIO_PIN_9, .Mode = GPIO_MODE_AF_PP, .Pull = GPIO_PULLUP, .Speed = GPIO_SPEED_FREQ_HIGH, .Alternate = GPIO_AF7_USART3 },
.active_state = 0
},
};
diff --git a/hw/bsp/stm32h5/boards/stm32h573i_dk/board.h b/hw/bsp/stm32h5/boards/stm32h573i_dk/board.h
index e9c406486..ce4ef3358 100644
--- a/hw/bsp/stm32h5/boards/stm32h573i_dk/board.h
+++ b/hw/bsp/stm32h5/boards/stm32h573i_dk/board.h
@@ -43,14 +43,16 @@ extern "C" {
#define OTG_FS_VBUS_SENSE 1
#define OTG_HS_VBUS_SENSE 0
-#define PINID_LED 0
-#define PINID_BUTTON 1
-#define PINID_UART_TX 2
-#define PINID_UART_RX 3
-#define PINID_TCPP0203_EN 4
-#define PINID_I2C_SCL 5
-#define PINID_I2C_SDA 6
-#define PINID_TCPP0203_INT 7
+#define UART_ID 1
+
+#define PINID_LED 0
+#define PINID_BUTTON 1
+#define PINID_UART_TX 2
+#define PINID_UART_RX 3
+#define PINID_TCPP0203_EN 4
+#define PINID_I2C_SCL 5
+#define PINID_I2C_SDA 6
+#define PINID_TCPP0203_INT 7
static board_pindef_t board_pindef[] = {
{ // LED
diff --git a/hw/bsp/stm32h5/family.c b/hw/bsp/stm32h5/family.c
index f52f94f32..867171734 100644
--- a/hw/bsp/stm32h5/family.c
+++ b/hw/bsp/stm32h5/family.c
@@ -91,8 +91,10 @@ static UART_HandleTypeDef UartHandle = {
.Parity = UART_PARITY_NONE,
.HwFlowCtl = UART_HWCONTROL_NONE,
.Mode = UART_MODE_TX_RX,
- .OverSampling = UART_OVERSAMPLING_16,
- .AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT
+ .OverSampling = UART_OVERSAMPLING_16
+ },
+ .AdvancedInit = {
+ .AdvFeatureInit = UART_ADVFEATURE_NO_INIT
}
};
#endif
diff --git a/hw/bsp/stm32h5/linker/STM32H503xx_FLASH.ld b/hw/bsp/stm32h5/linker/STM32H503xx_FLASH.ld
index 169ac81b7..06f72ac5a 100644
--- a/hw/bsp/stm32h5/linker/STM32H503xx_FLASH.ld
+++ b/hw/bsp/stm32h5/linker/STM32H503xx_FLASH.ld
@@ -44,6 +44,7 @@ MEMORY
/* Highest address of the user mode stack */
_estack = ORIGIN(RAM) + LENGTH(RAM); /* end of "RAM" Ram type memory */
+_sstack = _estack - _Min_Stack_Size;
_Min_Heap_Size = 0x200; /* required amount of heap */
_Min_Stack_Size = 0x1000; /* required amount of stack */
diff --git a/hw/bsp/stm32h5/linker/STM32H523xx_FLASH.ld b/hw/bsp/stm32h5/linker/STM32H523xx_FLASH.ld
index 633fc280e..a5a13214b 100644
--- a/hw/bsp/stm32h5/linker/STM32H523xx_FLASH.ld
+++ b/hw/bsp/stm32h5/linker/STM32H523xx_FLASH.ld
@@ -44,6 +44,7 @@ MEMORY
/* Highest address of the user mode stack */
_estack = ORIGIN(RAM) + LENGTH(RAM); /* end of "RAM" Ram type memory */
+_sstack = _estack - _Min_Stack_Size;
_Min_Heap_Size = 0x200; /* required amount of heap */
_Min_Stack_Size = 0x1000; /* required amount of stack */
diff --git a/hw/bsp/stm32h5/linker/STM32H533xx_FLASH.ld b/hw/bsp/stm32h5/linker/STM32H533xx_FLASH.ld
index 4d010cf9e..421b72e87 100644
--- a/hw/bsp/stm32h5/linker/STM32H533xx_FLASH.ld
+++ b/hw/bsp/stm32h5/linker/STM32H533xx_FLASH.ld
@@ -44,6 +44,7 @@ MEMORY
/* Highest address of the user mode stack */
_estack = ORIGIN(RAM) + LENGTH(RAM); /* end of "RAM" Ram type memory */
+_sstack = _estack - _Min_Stack_Size;
_Min_Heap_Size = 0x200; /* required amount of heap */
_Min_Stack_Size = 0x1000; /* required amount of stack */
diff --git a/hw/bsp/stm32h5/linker/STM32H562xx_FLASH.ld b/hw/bsp/stm32h5/linker/STM32H562xx_FLASH.ld
index aeb799d63..ac56bf597 100644
--- a/hw/bsp/stm32h5/linker/STM32H562xx_FLASH.ld
+++ b/hw/bsp/stm32h5/linker/STM32H562xx_FLASH.ld
@@ -44,6 +44,7 @@ MEMORY
/* Highest address of the user mode stack */
_estack = ORIGIN(RAM) + LENGTH(RAM); /* end of "RAM" Ram type memory */
+_sstack = _estack - _Min_Stack_Size;
_Min_Heap_Size = 0x200; /* required amount of heap */
_Min_Stack_Size = 0x1000; /* required amount of stack */
diff --git a/hw/bsp/stm32h5/linker/STM32H563xx_FLASH.ld b/hw/bsp/stm32h5/linker/STM32H563xx_FLASH.ld
index 2e8d38319..bbe89e1ac 100644
--- a/hw/bsp/stm32h5/linker/STM32H563xx_FLASH.ld
+++ b/hw/bsp/stm32h5/linker/STM32H563xx_FLASH.ld
@@ -44,6 +44,7 @@ MEMORY
/* Highest address of the user mode stack */
_estack = ORIGIN(RAM) + LENGTH(RAM); /* end of "RAM" Ram type memory */
+_sstack = _estack - _Min_Stack_Size;
_Min_Heap_Size = 0x200; /* required amount of heap */
_Min_Stack_Size = 0x1000; /* required amount of stack */
diff --git a/hw/bsp/stm32h5/linker/STM32H573xx_FLASH.ld b/hw/bsp/stm32h5/linker/STM32H573xx_FLASH.ld
index dd00557c0..d0363bb10 100644
--- a/hw/bsp/stm32h5/linker/STM32H573xx_FLASH.ld
+++ b/hw/bsp/stm32h5/linker/STM32H573xx_FLASH.ld
@@ -44,6 +44,7 @@ MEMORY
/* Highest address of the user mode stack */
_estack = ORIGIN(RAM) + LENGTH(RAM); /* end of "RAM" Ram type memory */
+_sstack = _estack - _Min_Stack_Size;
_Min_Heap_Size = 0x200; /* required amount of heap */
_Min_Stack_Size = 0x1000; /* required amount of stack */
diff --git a/tools/get_deps.py b/tools/get_deps.py
index ebbf9b871..9d745ee26 100755
--- a/tools/get_deps.py
+++ b/tools/get_deps.py
@@ -134,7 +134,7 @@ deps_optional = {
'57ea11f70ebf1850e1048989d665c9070f0bb863',
'stm32h7rs'],
'hw/mcu/st/cmsis_device_h5': ['https://github.com/STMicroelectronics/cmsis_device_h5.git',
- '5273b8f134ba65f5b8174c4141b711b5c0d295b2',
+ '884b8dc78e41cbfca008363342b17f4a9e8641f7',
'stm32h5'],
'hw/mcu/st/cmsis_device_l0': ['https://github.com/STMicroelectronics/cmsis_device_l0.git',
'7b7ae8cd71437331e1d7824f157d00c7bb4a5044',