Skip to content

Commit d0f3085

Browse files
committed
variant(H5): add NUCLEO-H563ZI support
Signed-off-by: Frederic Pillon <[email protected]>
1 parent 00022cf commit d0f3085

File tree

4 files changed

+563
-0
lines changed

4 files changed

+563
-0
lines changed

Diff for: README.md

+1
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,7 @@ User can add a STM32 based board following this [wiki](https://github.com/stm32d
9595
| :green_heart: | STM32F767ZI | [Nucleo F767ZI](http://www.st.com/en/evaluation-tools/nucleo-f767zi.html) | *1.4.0* | |
9696
| :green_heart: | STM32F746ZG | [Nucleo F746ZG](https://www.st.com/en/evaluation-tools/nucleo-f746zg.html) | *1.9.0* | |
9797
| :green_heart: | STM32F756ZG | [Nucleo F756ZG](https://www.st.com/en/evaluation-tools/nucleo-f756zg.html) | *1.9.0* | |
98+
| :yellow_heart: | STM32H563ZI | [Nucleo H563ZI](https://www.st.com/en/evaluation-tools/nucleo-h563zi.html) | **2.6.0** | |
9899
| :green_heart: | STM32H723ZG | [Nucleo H723ZG](https://www.st.com/en/evaluation-tools/nucleo-h723zg.html) | *2.4.0* | |
99100
| :green_heart: | STM32H743ZI | [Nucleo H743ZI(2)](https://www.st.com/en/evaluation-tools/nucleo-h743zi.html) | *1.5.0* | Nucleo H743ZI2 since 1.6.0 |
100101
| :green_heart: | STM32L496ZG | [Nucleo L496ZG](http://www.st.com/en/evaluation-tools/nucleo-l496zg.html) | *1.3.0* | |

Diff for: boards.txt

+14
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,20 @@ Nucleo_144.menu.pnum.NUCLEO_F767ZI.build.product_line=STM32F767xx
138138
Nucleo_144.menu.pnum.NUCLEO_F767ZI.build.variant=STM32F7xx/F765Z(G-I)T_F767Z(G-I)T_F777ZIT
139139
Nucleo_144.menu.pnum.NUCLEO_F767ZI.build.cmsis_lib_gcc=arm_cortexM7lfsp_math
140140

141+
# NUCLEO H563ZI
142+
Nucleo_144.menu.pnum.NUCLEO_H563ZI=Nucleo H563ZI
143+
Nucleo_144.menu.pnum.NUCLEO_H563ZI.node=NOD_H563ZI
144+
Nucleo_144.menu.pnum.NUCLEO_H563ZI.upload.maximum_size=2097152
145+
Nucleo_144.menu.pnum.NUCLEO_H563ZI.upload.maximum_data_size=655360
146+
Nucleo_144.menu.pnum.NUCLEO_H563ZI.build.mcu=cortex-m33
147+
Nucleo_144.menu.pnum.NUCLEO_H563ZI.build.fpu=-mfpu=fpv4-sp-d16
148+
Nucleo_144.menu.pnum.NUCLEO_H563ZI.build.float-abi=-mfloat-abi=hard
149+
Nucleo_144.menu.pnum.NUCLEO_H563ZI.build.board=NUCLEO_H563ZI
150+
Nucleo_144.menu.pnum.NUCLEO_H563ZI.build.series=STM32H5xx
151+
Nucleo_144.menu.pnum.NUCLEO_H563ZI.build.product_line=STM32H563xx
152+
Nucleo_144.menu.pnum.NUCLEO_H563ZI.build.variant=STM32H5xx/H563Z(G-I)T_H573ZIT
153+
Nucleo_144.menu.pnum.NUCLEO_H563ZI.build.cmsis_lib_gcc=arm_ARMv8MMLlfsp_math
154+
141155
# NUCLEO H723ZG board
142156
Nucleo_144.menu.pnum.NUCLEO_H723ZG=Nucleo H723ZG
143157
Nucleo_144.menu.pnum.NUCLEO_H723ZG.node=NODE_H723ZG
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,259 @@
1+
/*
2+
*******************************************************************************
3+
* Copyright (c) 2020, STMicroelectronics
4+
* All rights reserved.
5+
*
6+
* This software component is licensed by ST under BSD 3-Clause license,
7+
* the "License"; You may not use this file except in compliance with the
8+
* License. You may obtain a copy of the License at:
9+
* opensource.org/licenses/BSD-3-Clause
10+
*
11+
*******************************************************************************
12+
*/
13+
#if defined(ARDUINO_NUCLEO_H563ZI)
14+
#include "pins_arduino.h"
15+
16+
// Digital PinName array
17+
const PinName digitalPin[] = {
18+
PB_7, // D0
19+
PB_6, // D1
20+
PG_14, // D2
21+
PE_13, // D3
22+
PE_14, // D4
23+
PE_11, // D5
24+
PE_9, // D6
25+
PG_12, // D7
26+
PF_3, // D8
27+
PD_15, // D9
28+
PD_14, // D10
29+
PB_5, // D11
30+
PG_9, // D12
31+
PA_5, // D13/A9
32+
PB_9, // D14
33+
PB_8, // D15
34+
PC_6, // D16
35+
PB_15, // D17
36+
PB_13, // D18
37+
PB_12, // D19
38+
PA_15, // D20
39+
PC_7, // D21
40+
PB_5, // D22
41+
PB_3, // D23
42+
PG_10, // D24
43+
PB_4, // D25
44+
PG_6, // D26
45+
PB_2, // D27
46+
PD_13, // D28
47+
PD_12, // D29
48+
PD_11, // D30
49+
PE_2, // D31
50+
PA_0, // D32/A10
51+
PB_0, // D33/A11
52+
PE_0, // D34
53+
PA_3, // D35/A12
54+
PB_10, // D36
55+
PE_15, // D37
56+
PE_6, // D38
57+
PE_12, // D39
58+
PE_10, // D40
59+
PE_7, // D41
60+
PE_8, // D42
61+
PC_8, // D43
62+
PC_9, // D44
63+
PC_10, // D45
64+
PC_11, // D46
65+
PC_12, // D47
66+
PD_2, // D48
67+
PG_2, // D49
68+
PG_3, // D50
69+
PD_7, // D51
70+
PD_6, // D52
71+
PD_5, // D53
72+
PD_4, // D54
73+
PD_3, // D55
74+
PE_2, // D56
75+
PE_4, // D57
76+
PE_5, // D58
77+
PE_6, // D59
78+
PE_3, // D60
79+
PF_8, // D61
80+
PF_7, // D62
81+
PF_9, // D63
82+
PG_1, // D64
83+
PG_0, // D65
84+
PD_1, // D66
85+
PD_0, // D67
86+
PF_0, // D68
87+
PF_1, // D69
88+
PF_2, // D70
89+
PE_9, // D71
90+
PB_2, // D72
91+
PA_6, // D73/A0
92+
PC_0, // D74/A1
93+
PC_3, // D75/A2
94+
PB_1, // D76/A3
95+
PC_2, // D77/A4
96+
PF_11, // D78/A5
97+
PF_12, // D79/A6
98+
PF_13, // D80/A7
99+
PF_14, // D81/A8
100+
PA_1, // D82/A13
101+
PA_2, // D83/A14
102+
PA_4, // D84/A15
103+
PA_7, // D85/A16
104+
PA_8, // D86
105+
PA_9, // D87
106+
PA_10, // D88
107+
PA_11, // D89
108+
PA_12, // D90
109+
PA_13, // D91
110+
PA_14, // D92
111+
PB_14, // D93
112+
PC_1, // D94/A17
113+
PC_4, // D95/A18
114+
PC_5, // D96/A19
115+
PC_13, // D97
116+
PC_14, // D98
117+
PC_15, // D99
118+
PD_8, // D100
119+
PD_9, // D101
120+
PD_10, // D102
121+
PF_4, // D103
122+
PF_5, // D104
123+
PF_6, // D105
124+
PF_10, // D106
125+
PF_15, // D107
126+
PG_4, // D108
127+
PG_5, // D109
128+
PG_7, // D110
129+
PG_8, // D111
130+
PG_11, // D112
131+
PG_13, // D113
132+
PG_15, // D114
133+
PH_0, // D115
134+
PH_1 // D116
135+
};
136+
137+
// Analog (Ax) pin number array
138+
const uint32_t analogInputPin[] = {
139+
73, // A0, PA6
140+
74, // A1, PC0
141+
75, // A2, PC3
142+
76, // A3, PB1
143+
77, // A4, PC2
144+
78, // A5, PF11
145+
79, // A6, PF12
146+
80, // A7, PF13
147+
81, // A8, PF14
148+
13, // A9, PA5
149+
32, // A10, PA0
150+
33, // A11, PB0
151+
35, // A12, PA3
152+
82, // A13, PA1
153+
83, // A14, PA2
154+
84, // A15, PA4
155+
85, // A16, PA7
156+
94, // A17, PC1
157+
95, // A18, PC4
158+
96 // A19, PC5
159+
};
160+
161+
#ifdef __cplusplus
162+
extern "C" {
163+
#endif
164+
165+
/**
166+
* @brief System Clock Configuration
167+
* @param None
168+
* @retval None
169+
*/
170+
WEAK void SystemClock_Config(void)
171+
{
172+
RCC_OscInitTypeDef RCC_OscInitStruct = {};
173+
RCC_ClkInitTypeDef RCC_ClkInitStruct = {};
174+
RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = {};
175+
176+
/** Configure the main internal regulator output voltage
177+
*/
178+
__HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE0);
179+
180+
while (!__HAL_PWR_GET_FLAG(PWR_FLAG_VOSRDY)) {}
181+
182+
/** Initializes the RCC Oscillators according to the specified parameters
183+
* in the RCC_OscInitTypeDef structure.
184+
*/
185+
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI | RCC_OSCILLATORTYPE_HSE
186+
| RCC_OSCILLATORTYPE_LSE;
187+
RCC_OscInitStruct.HSEState = RCC_HSE_BYPASS_DIGITAL;
188+
RCC_OscInitStruct.LSEState = RCC_LSE_ON;
189+
RCC_OscInitStruct.HSIState = RCC_HSI_ON;
190+
RCC_OscInitStruct.HSIDiv = RCC_HSI_DIV1;
191+
RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
192+
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
193+
RCC_OscInitStruct.PLL.PLLSource = RCC_PLL1_SOURCE_HSE;
194+
RCC_OscInitStruct.PLL.PLLM = 4;
195+
RCC_OscInitStruct.PLL.PLLN = 250;
196+
RCC_OscInitStruct.PLL.PLLP = 2;
197+
RCC_OscInitStruct.PLL.PLLQ = 2;
198+
RCC_OscInitStruct.PLL.PLLR = 2;
199+
RCC_OscInitStruct.PLL.PLLRGE = RCC_PLL1_VCIRANGE_1;
200+
RCC_OscInitStruct.PLL.PLLVCOSEL = RCC_PLL1_VCORANGE_WIDE;
201+
RCC_OscInitStruct.PLL.PLLFRACN = 0;
202+
if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) {
203+
Error_Handler();
204+
}
205+
206+
/** Initializes the CPU, AHB and APB buses clocks
207+
*/
208+
RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_SYSCLK
209+
| RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2
210+
| RCC_CLOCKTYPE_PCLK3;
211+
RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
212+
RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
213+
RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
214+
RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
215+
RCC_ClkInitStruct.APB3CLKDivider = RCC_HCLK_DIV1;
216+
217+
if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_5) != HAL_OK) {
218+
Error_Handler();
219+
}
220+
221+
/** Initializes the peripherals clock
222+
*/
223+
PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_ADCDAC | RCC_PERIPHCLK_LPUART1
224+
| RCC_PERIPHCLK_OSPI | RCC_PERIPHCLK_SDMMC1
225+
| RCC_PERIPHCLK_USB;
226+
PeriphClkInitStruct.AdcDacClockSelection = RCC_ADCDACCLKSOURCE_HCLK;
227+
PeriphClkInitStruct.PLL2.PLL2Source = RCC_PLL2_SOURCE_HSE;
228+
PeriphClkInitStruct.PLL2.PLL2M = 2;
229+
PeriphClkInitStruct.PLL2.PLL2N = 128;
230+
PeriphClkInitStruct.PLL2.PLL2P = 2;
231+
PeriphClkInitStruct.PLL2.PLL2Q = 16;
232+
PeriphClkInitStruct.PLL2.PLL2R = 2;
233+
PeriphClkInitStruct.PLL2.PLL2RGE = RCC_PLL2_VCIRANGE_2;
234+
PeriphClkInitStruct.PLL2.PLL2VCOSEL = RCC_PLL2_VCORANGE_WIDE;
235+
PeriphClkInitStruct.PLL2.PLL2FRACN = 0;
236+
PeriphClkInitStruct.PLL2.PLL2ClockOut = RCC_PLL2_DIVQ;
237+
PeriphClkInitStruct.Lpuart1ClockSelection = RCC_LPUART1CLKSOURCE_PLL2Q;
238+
PeriphClkInitStruct.OspiClockSelection = RCC_OSPICLKSOURCE_HCLK;
239+
PeriphClkInitStruct.Sdmmc1ClockSelection = RCC_SDMMC1CLKSOURCE_PLL1Q;
240+
PeriphClkInitStruct.PLL3.PLL3Source = RCC_PLL3_SOURCE_HSE;
241+
PeriphClkInitStruct.PLL3.PLL3M = 2;
242+
PeriphClkInitStruct.PLL3.PLL3N = 96;
243+
PeriphClkInitStruct.PLL3.PLL3P = 2;
244+
PeriphClkInitStruct.PLL3.PLL3Q = 8;
245+
PeriphClkInitStruct.PLL3.PLL3R = 2;
246+
PeriphClkInitStruct.PLL3.PLL3RGE = RCC_PLL3_VCIRANGE_0;
247+
PeriphClkInitStruct.PLL3.PLL3VCOSEL = RCC_PLL3_VCORANGE_MEDIUM;
248+
PeriphClkInitStruct.PLL3.PLL3FRACN = 0;
249+
PeriphClkInitStruct.PLL3.PLL3ClockOut = RCC_PLL3_DIVQ;
250+
PeriphClkInitStruct.UsbClockSelection = RCC_USBCLKSOURCE_PLL3Q;
251+
if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK) {
252+
Error_Handler();
253+
}
254+
}
255+
256+
#ifdef __cplusplus
257+
} // extern "C"
258+
#endif
259+
#endif /* ARDUINO_NUCLEO_H563ZI */

0 commit comments

Comments
 (0)