Skip to content

Commit 00022cf

Browse files
committed
variant(H5): add H563Z(G-I)T_H573ZIT generic support
Signed-off-by: Frederic Pillon <[email protected]>
1 parent ee8bb5e commit 00022cf

File tree

4 files changed

+371
-2
lines changed

4 files changed

+371
-2
lines changed

Diff for: README.md

+8
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ User can add a STM32 based board following this [wiki](https://github.com/stm32d
6464
- [Generic STM32F7 boards](#generic-stm32f7-boards)
6565
- [Generic STM32G0 boards](#generic-stm32g0-boards)
6666
- [Generic STM32G4 boards](#generic-stm32g4-boards)
67+
- [Generic STM32H5 boards](#generic-stm32h5-boards)
6768
- [Generic STM32H7 boards](#generic-stm32h7-boards)
6869
- [Generic STM32L0 boards](#generic-stm32l0-boards)
6970
- [Generic STM32L1 boards](#generic-stm32l1-boards)
@@ -510,6 +511,13 @@ User can add a STM32 based board following this [wiki](https://github.com/stm32d
510511
| :green_heart: | STM32G4A1RE | Generic Board | *2.3.0* | |
511512
| :green_heart: | STM32G4A1VE | Generic Board | *2.4.0* | |
512513

514+
### Generic STM32H5 boards
515+
516+
| Status | Device(s) | Name | Release | Notes |
517+
| :----: | :-------: | ---- | :-----: | :---- |
518+
| :yellow_heart: | STM32H563ZG<br>STM32H563ZI | Generic Board | **2.6.0** | |
519+
| :yellow_heart: | STM32H573ZI | Generic Board | **2.6.0** | |
520+
513521
### Generic STM32H7 boards
514522

515523
| Status | Device(s) | Name | Release | Notes |

Diff for: boards.txt

+114
Original file line numberDiff line numberDiff line change
@@ -7172,6 +7172,62 @@ GenG4.menu.upload_method.dfuMethod.upload.protocol=2
71727172
GenG4.menu.upload_method.dfuMethod.upload.options=
71737173
GenG4.menu.upload_method.dfuMethod.upload.tool=stm32CubeProg
71747174

7175+
################################################################################
7176+
# Generic H5
7177+
GenH5.name=Generic STM32H5 series
7178+
7179+
GenH5.build.core=arduino
7180+
GenH5.build.board=GenH5
7181+
GenH5.build.st_extra_flags=-D{build.product_line} {build.enable_usb} {build.xSerial}
7182+
GenH5.build.mcu=cortex-m33
7183+
GenH5.build.fpu=-mfpu=fpv4-sp-d16
7184+
GenH5.build.float-abi=-mfloat-abi=hard
7185+
GenH5.build.series=STM32H5xx
7186+
GenH5.build.cmsis_lib_gcc=arm_ARMv8MMLlfsp_math
7187+
GenH5.build.flash_offset=0x0
7188+
GenH5.upload.maximum_size=0
7189+
GenH5.upload.maximum_data_size=0
7190+
7191+
# Generic H563ZGTx
7192+
GenH5.menu.pnum.GENERIC_H563ZGTX=Generic H563ZGTx
7193+
GenH5.menu.pnum.GENERIC_H563ZGTX.upload.maximum_size=1048576
7194+
GenH5.menu.pnum.GENERIC_H563ZGTX.upload.maximum_data_size=655360
7195+
GenH5.menu.pnum.GENERIC_H563ZGTX.build.board=GENERIC_H563ZGTX
7196+
GenH5.menu.pnum.GENERIC_H563ZGTX.build.product_line=STM32H563xx
7197+
GenH5.menu.pnum.GENERIC_H563ZGTX.build.variant=STM32H5xx/H563Z(G-I)T_H573ZIT
7198+
7199+
# Generic H563ZITx
7200+
GenH5.menu.pnum.GENERIC_H563ZITX=Generic H563ZITx
7201+
GenH5.menu.pnum.GENERIC_H563ZITX.upload.maximum_size=2097152
7202+
GenH5.menu.pnum.GENERIC_H563ZITX.upload.maximum_data_size=655360
7203+
GenH5.menu.pnum.GENERIC_H563ZITX.build.board=GENERIC_H563ZITX
7204+
GenH5.menu.pnum.GENERIC_H563ZITX.build.product_line=STM32H563xx
7205+
GenH5.menu.pnum.GENERIC_H563ZITX.build.variant=STM32H5xx/H563Z(G-I)T_H573ZIT
7206+
7207+
# Generic H573ZITx
7208+
GenH5.menu.pnum.GENERIC_H573ZITX=Generic H573ZITx
7209+
GenH5.menu.pnum.GENERIC_H573ZITX.upload.maximum_size=2097152
7210+
GenH5.menu.pnum.GENERIC_H573ZITX.upload.maximum_data_size=655360
7211+
GenH5.menu.pnum.GENERIC_H573ZITX.build.board=GENERIC_H573ZITX
7212+
GenH5.menu.pnum.GENERIC_H573ZITX.build.product_line=STM32H573xx
7213+
GenH5.menu.pnum.GENERIC_H573ZITX.build.variant=STM32H5xx/H563Z(G-I)T_H573ZIT
7214+
7215+
# Upload menu
7216+
GenH5.menu.upload_method.swdMethod=STM32CubeProgrammer (SWD)
7217+
GenH5.menu.upload_method.swdMethod.upload.protocol=0
7218+
GenH5.menu.upload_method.swdMethod.upload.options=
7219+
GenH5.menu.upload_method.swdMethod.upload.tool=stm32CubeProg
7220+
7221+
GenH5.menu.upload_method.serialMethod=STM32CubeProgrammer (Serial)
7222+
GenH5.menu.upload_method.serialMethod.upload.protocol=1
7223+
GenH5.menu.upload_method.serialMethod.upload.options={serial.port.file}
7224+
GenH5.menu.upload_method.serialMethod.upload.tool=stm32CubeProg
7225+
7226+
GenH5.menu.upload_method.dfuMethod=STM32CubeProgrammer (DFU)
7227+
GenH5.menu.upload_method.dfuMethod.upload.protocol=2
7228+
GenH5.menu.upload_method.dfuMethod.upload.options=
7229+
GenH5.menu.upload_method.dfuMethod.upload.tool=stm32CubeProg
7230+
71757231
################################################################################
71767232
# Generic H7
71777233
GenH7.name=Generic STM32H7 Series
@@ -10768,6 +10824,12 @@ GenG4.menu.xserial.none.build.xSerial=-DHAL_UART_MODULE_ENABLED -DHWSERIAL_NONE
1076810824
GenG4.menu.xserial.disabled=Disabled (no Serial support)
1076910825
GenG4.menu.xserial.disabled.build.xSerial=
1077010826

10827+
GenH5.menu.xserial.generic=Enabled (generic 'Serial')
10828+
GenH5.menu.xserial.none=Enabled (no generic 'Serial')
10829+
GenH5.menu.xserial.none.build.xSerial=-DHAL_UART_MODULE_ENABLED -DHWSERIAL_NONE
10830+
GenH5.menu.xserial.disabled=Disabled (no Serial support)
10831+
GenH5.menu.xserial.disabled.build.xSerial=
10832+
1077110833
GenH7.menu.xserial.generic=Enabled (generic 'Serial')
1077210834
GenH7.menu.xserial.none=Enabled (no generic 'Serial')
1077310835
GenH7.menu.xserial.none.build.xSerial=-DHAL_UART_MODULE_ENABLED -DHWSERIAL_NONE
@@ -11024,6 +11086,19 @@ GenG0.menu.usb.CDC.build.enable_usb={build.usb_flags} -DUSBD_USE_CDC -DDISABLE_G
1102411086
GenG0.menu.usb.HID=HID (keyboard and mouse)
1102511087
GenG0.menu.usb.HID.build.enable_usb={build.usb_flags} -DUSBD_USE_HID_COMPOSITE
1102611088

11089+
GenH5.menu.usb.none=None
11090+
GenH5.menu.usb.CDCgen=CDC (generic 'Serial' supersede U(S)ART)
11091+
GenH5.menu.usb.CDCgen.build.enable_usb={build.usb_flags} -DUSBD_USE_CDC
11092+
GenH5.menu.usb.CDC=CDC (no generic 'Serial')
11093+
GenH5.menu.usb.CDC.build.enable_usb={build.usb_flags} -DUSBD_USE_CDC -DDISABLE_GENERIC_SERIALUSB
11094+
GenH5.menu.usb.HID=HID (keyboard and mouse)
11095+
GenH5.menu.usb.HID.build.enable_usb={build.usb_flags} -DUSBD_USE_HID_COMPOSITE
11096+
GenH5.menu.xusb.FS=Low/Full Speed
11097+
GenH5.menu.xusb.HS=High Speed
11098+
GenH5.menu.xusb.HS.build.usb_speed=-DUSE_USB_HS
11099+
GenH5.menu.xusb.HSFS=High Speed in Full Speed mode
11100+
GenH5.menu.xusb.HSFS.build.usb_speed=-DUSE_USB_HS -DUSE_USB_HS_IN_FS
11101+
1102711102
GenH7.menu.usb.none=None
1102811103
GenH7.menu.usb.CDCgen=CDC (generic 'Serial' supersede U(S)ART)
1102911104
GenH7.menu.usb.CDCgen.build.enable_usb={build.usb_flags} -DUSBD_USE_CDC
@@ -11486,6 +11561,27 @@ GenG4.menu.opt.ogstd.build.flags.optimize=-Og
1148611561
GenG4.menu.opt.o0std=No Optimization (-O0)
1148711562
GenG4.menu.opt.o0std.build.flags.optimize=-O0
1148811563

11564+
GenH5.menu.opt.osstd=Smallest (-Os default)
11565+
GenH5.menu.opt.osstd.build.flags.optimize=-Os
11566+
GenH5.menu.opt.oslto=Smallest (-Os) with LTO
11567+
GenH5.menu.opt.oslto.build.flags.optimize=-Os -flto
11568+
GenH5.menu.opt.o1std=Fast (-O1)
11569+
GenH5.menu.opt.o1std.build.flags.optimize=-O1
11570+
GenH5.menu.opt.o1lto=Fast (-O1) with LTO
11571+
GenH5.menu.opt.o1lto.build.flags.optimize=-O1 -flto
11572+
GenH5.menu.opt.o2std=Faster (-O2)
11573+
GenH5.menu.opt.o2std.build.flags.optimize=-O2
11574+
GenH5.menu.opt.o2lto=Faster (-O2) with LTO
11575+
GenH5.menu.opt.o2lto.build.flags.optimize=-O2 -flto
11576+
GenH5.menu.opt.o3std=Fastest (-O3)
11577+
GenH5.menu.opt.o3std.build.flags.optimize=-O3
11578+
GenH5.menu.opt.o3lto=Fastest (-O3) with LTO
11579+
GenH5.menu.opt.o3lto.build.flags.optimize=-O3 -flto
11580+
GenH5.menu.opt.ogstd=Debug (-Og)
11581+
GenH5.menu.opt.ogstd.build.flags.optimize=-Og
11582+
GenH5.menu.opt.o0std=No Optimization (-O0)
11583+
GenH5.menu.opt.o0std.build.flags.optimize=-O0
11584+
1148911585
GenH7.menu.opt.osstd=Smallest (-Os default)
1149011586
GenH7.menu.opt.oslto=Smallest (-Os) with LTO
1149111587
GenH7.menu.opt.oslto.build.flags.optimize=-Os -flto
@@ -11924,6 +12020,14 @@ GenG4.menu.dbg.enable_log.build.flags.debug=
1192412020
GenG4.menu.dbg.enable_all=Core Logs and Symbols Enabled (-g)
1192512021
GenG4.menu.dbg.enable_all.build.flags.debug=-g
1192612022

12023+
GenH5.menu.dbg.none=None
12024+
GenH5.menu.dbg.enable_sym=Symbols Enabled (-g)
12025+
GenH5.menu.dbg.enable_sym.build.flags.debug=-g -DNDEBUG
12026+
GenH5.menu.dbg.enable_log=Core logs Enabled
12027+
GenH5.menu.dbg.enable_log.build.flags.debug=
12028+
GenH5.menu.dbg.enable_all=Core Logs and Symbols Enabled (-g)
12029+
GenH5.menu.dbg.enable_all.build.flags.debug=-g
12030+
1192712031
GenH7.menu.dbg.none=None
1192812032
GenH7.menu.dbg.enable_sym=Symbols Enabled (-g)
1192912033
GenH7.menu.dbg.enable_sym.build.flags.debug=-g -DNDEBUG
@@ -12195,6 +12299,16 @@ GenG4.menu.rtlib.nanofps.build.flags.ldspecs=--specs=nano.specs -u _printf_float
1219512299
GenG4.menu.rtlib.full=Newlib Standard
1219612300
GenG4.menu.rtlib.full.build.flags.ldspecs=
1219712301

12302+
GenH5.menu.rtlib.nano=Newlib Nano (default)
12303+
GenH5.menu.rtlib.nanofp=Newlib Nano + Float Printf
12304+
GenH5.menu.rtlib.nanofp.build.flags.ldspecs=--specs=nano.specs -u _printf_float
12305+
GenH5.menu.rtlib.nanofs=Newlib Nano + Float Scanf
12306+
GenH5.menu.rtlib.nanofs.build.flags.ldspecs=--specs=nano.specs -u _scanf_float
12307+
GenH5.menu.rtlib.nanofps=Newlib Nano + Float Printf/Scanf
12308+
GenH5.menu.rtlib.nanofps.build.flags.ldspecs=--specs=nano.specs -u _printf_float -u _scanf_float
12309+
GenH5.menu.rtlib.full=Newlib Standard
12310+
GenH5.menu.rtlib.full.build.flags.ldspecs=
12311+
1219812312
GenH7.menu.rtlib.nano=Newlib Nano (default)
1219912313
GenH7.menu.rtlib.nanofp=Newlib Nano + Float Printf
1220012314
GenH7.menu.rtlib.nanofp.build.flags.ldspecs=--specs=nano.specs -u _printf_float

Diff for: variants/STM32H5xx/H563Z(G-I)T_H573ZIT/generic_clock.c

+64-2
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,70 @@
2121
*/
2222
WEAK void SystemClock_Config(void)
2323
{
24-
/* SystemClock_Config can be generated by STM32CubeMX */
25-
#warning "SystemClock_Config() is empty. Default clock at reset is used."
24+
RCC_OscInitTypeDef RCC_OscInitStruct = {};
25+
RCC_ClkInitTypeDef RCC_ClkInitStruct = {};
26+
RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = {};
27+
28+
/** Configure the main internal regulator output voltage
29+
*/
30+
__HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE0);
31+
32+
while (!__HAL_PWR_GET_FLAG(PWR_FLAG_VOSRDY)) {}
33+
34+
/** Initializes the RCC Oscillators according to the specified parameters
35+
* in the RCC_OscInitTypeDef structure.
36+
*/
37+
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI48 | RCC_OSCILLATORTYPE_HSI
38+
| RCC_OSCILLATORTYPE_LSI | RCC_OSCILLATORTYPE_CSI;
39+
RCC_OscInitStruct.HSIState = RCC_HSI_ON;
40+
RCC_OscInitStruct.HSIDiv = RCC_HSI_DIV2;
41+
RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
42+
RCC_OscInitStruct.LSIState = RCC_LSI_ON;
43+
RCC_OscInitStruct.HSI48State = RCC_HSI48_ON;
44+
RCC_OscInitStruct.CSIState = RCC_CSI_ON;
45+
RCC_OscInitStruct.CSICalibrationValue = RCC_CSICALIBRATION_DEFAULT;
46+
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
47+
RCC_OscInitStruct.PLL.PLLSource = RCC_PLL1_SOURCE_CSI;
48+
RCC_OscInitStruct.PLL.PLLM = 1;
49+
RCC_OscInitStruct.PLL.PLLN = 125;
50+
RCC_OscInitStruct.PLL.PLLP = 2;
51+
RCC_OscInitStruct.PLL.PLLQ = 2;
52+
RCC_OscInitStruct.PLL.PLLR = 2;
53+
RCC_OscInitStruct.PLL.PLLRGE = RCC_PLL1_VCIRANGE_2;
54+
RCC_OscInitStruct.PLL.PLLVCOSEL = RCC_PLL1_VCORANGE_WIDE;
55+
RCC_OscInitStruct.PLL.PLLFRACN = 0;
56+
if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) {
57+
Error_Handler();
58+
}
59+
60+
/** Initializes the CPU, AHB and APB buses clocks
61+
*/
62+
RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_SYSCLK
63+
| RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2
64+
| RCC_CLOCKTYPE_PCLK3;
65+
RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
66+
RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
67+
RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
68+
RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
69+
RCC_ClkInitStruct.APB3CLKDivider = RCC_HCLK_DIV1;
70+
71+
if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_5) != HAL_OK) {
72+
Error_Handler();
73+
}
74+
75+
/** Initializes the peripherals clock
76+
*/
77+
PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_ADCDAC | RCC_PERIPHCLK_LPUART1
78+
| RCC_PERIPHCLK_OSPI | RCC_PERIPHCLK_SDMMC1
79+
| RCC_PERIPHCLK_USB;
80+
PeriphClkInitStruct.AdcDacClockSelection = RCC_ADCDACCLKSOURCE_HCLK;
81+
PeriphClkInitStruct.Lpuart1ClockSelection = RCC_LPUART1CLKSOURCE_HSI;
82+
PeriphClkInitStruct.OspiClockSelection = RCC_OSPICLKSOURCE_HCLK;
83+
PeriphClkInitStruct.Sdmmc1ClockSelection = RCC_SDMMC1CLKSOURCE_PLL1Q;
84+
PeriphClkInitStruct.UsbClockSelection = RCC_USBCLKSOURCE_HSI48;
85+
if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK) {
86+
Error_Handler();
87+
}
2688
}
2789

2890
#endif /* ARDUINO_GENERIC_* */

0 commit comments

Comments
 (0)