Skip to content

Commit 37ff544

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

File tree

4 files changed

+566
-0
lines changed

4 files changed

+566
-0
lines changed

README.md

+1
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,7 @@ User can add a STM32 based board following this [wiki](https://github.com/stm32d
9393
| :green_heart: | STM32F767ZI | [Nucleo F767ZI](http://www.st.com/en/evaluation-tools/nucleo-f767zi.html) | *1.4.0* | |
9494
| :green_heart: | STM32F746ZG | [Nucleo F746ZG](https://www.st.com/en/evaluation-tools/nucleo-f746zg.html) | *1.9.0* | |
9595
| :green_heart: | STM32F756ZG | [Nucleo F756ZG](https://www.st.com/en/evaluation-tools/nucleo-f756zg.html) | *1.9.0* | |
96+
| :yellow_heart: | STM32H563ZI | [Nucleo H563ZI](https://www.st.com/en/evaluation-tools/nucleo-h563zi.html) | **2.6.0** | |
9697
| :green_heart: | STM32L496ZG | [Nucleo L496ZG](http://www.st.com/en/evaluation-tools/nucleo-l496zg.html) | *1.3.0* | |
9798
| :green_heart: | STM32L496ZG-P | [Nucleo L496ZG-P](http://www.st.com/en/evaluation-tools/nucleo-l496zg-p.html) | *1.3.0* | |
9899
| :green_heart: | STM32L4R5ZI | [Nucleo L4R5ZI](http://www.st.com/en/evaluation-tools/nucleo-l4r5zi.html) | *1.4.0* | |

boards.txt

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

127+
# NUCLEO H563ZI
128+
Nucleo_144.menu.pnum.NUCLEO_H563ZI=Nucleo H563ZI
129+
Nucleo_144.menu.pnum.NUCLEO_H563ZI.node=NOD_H563ZI
130+
Nucleo_144.menu.pnum.NUCLEO_H563ZI.upload.maximum_size=2097152
131+
Nucleo_144.menu.pnum.NUCLEO_H563ZI.upload.maximum_data_size=655360
132+
Nucleo_144.menu.pnum.NUCLEO_H563ZI.build.mcu=cortex-m33
133+
Nucleo_144.menu.pnum.NUCLEO_H563ZI.build.fpu=-mfpu=fpv4-sp-d16
134+
Nucleo_144.menu.pnum.NUCLEO_H563ZI.build.float-abi=-mfloat-abi=hard
135+
Nucleo_144.menu.pnum.NUCLEO_H563ZI.build.board=NUCLEO_H563ZI
136+
Nucleo_144.menu.pnum.NUCLEO_H563ZI.build.series=STM32H5xx
137+
Nucleo_144.menu.pnum.NUCLEO_H563ZI.build.product_line=STM32H563xx
138+
Nucleo_144.menu.pnum.NUCLEO_H563ZI.build.variant=STM32H5xx/H563Z(G-I)T_H573ZIT
139+
Nucleo_144.menu.pnum.NUCLEO_H563ZI.build.cmsis_lib_gcc=arm_ARMv8MMLlfsp_math
140+
127141
# NUCLEO H723ZG board
128142
Nucleo_144.menu.pnum.NUCLEO_H723ZG=Nucleo H723ZG
129143
Nucleo_144.menu.pnum.NUCLEO_H723ZG.node=NODE_H723ZG
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,262 @@
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_HSE;
186+
RCC_OscInitStruct.HSEState = RCC_HSE_BYPASS_DIGITAL;
187+
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
188+
RCC_OscInitStruct.PLL.PLLSource = RCC_PLL1_SOURCE_HSE;
189+
RCC_OscInitStruct.PLL.PLLM = 4;
190+
RCC_OscInitStruct.PLL.PLLN = 250;
191+
RCC_OscInitStruct.PLL.PLLP = 2;
192+
RCC_OscInitStruct.PLL.PLLQ = 2;
193+
RCC_OscInitStruct.PLL.PLLR = 2;
194+
RCC_OscInitStruct.PLL.PLLRGE = RCC_PLL1_VCIRANGE_1;
195+
RCC_OscInitStruct.PLL.PLLVCOSEL = RCC_PLL1_VCORANGE_WIDE;
196+
RCC_OscInitStruct.PLL.PLLFRACN = 0;
197+
if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) {
198+
Error_Handler();
199+
}
200+
201+
/** Initializes the CPU, AHB and APB buses clocks
202+
*/
203+
RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_SYSCLK
204+
| RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2
205+
| RCC_CLOCKTYPE_PCLK3;
206+
RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
207+
RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
208+
RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
209+
RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
210+
RCC_ClkInitStruct.APB3CLKDivider = RCC_HCLK_DIV1;
211+
212+
if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_5) != HAL_OK) {
213+
Error_Handler();
214+
}
215+
216+
/** Initializes the peripherals clock
217+
*/
218+
PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_LPUART1 | RCC_PERIPHCLK_OSPI
219+
| RCC_PERIPHCLK_SDMMC1 | RCC_PERIPHCLK_SDMMC2
220+
| RCC_PERIPHCLK_SPI1 | RCC_PERIPHCLK_SPI2
221+
| RCC_PERIPHCLK_SPI3 | RCC_PERIPHCLK_SPI4
222+
| RCC_PERIPHCLK_SPI5 | RCC_PERIPHCLK_SPI6
223+
| RCC_PERIPHCLK_USB;
224+
PeriphClkInitStruct.PLL2.PLL2Source = RCC_PLL2_SOURCE_HSE;
225+
PeriphClkInitStruct.PLL2.PLL2M = 4;
226+
PeriphClkInitStruct.PLL2.PLL2N = 240;
227+
PeriphClkInitStruct.PLL2.PLL2P = 2;
228+
PeriphClkInitStruct.PLL2.PLL2Q = 15;
229+
PeriphClkInitStruct.PLL2.PLL2R = 10;
230+
PeriphClkInitStruct.PLL2.PLL2RGE = RCC_PLL2_VCIRANGE_1;
231+
PeriphClkInitStruct.PLL2.PLL2VCOSEL = RCC_PLL2_VCORANGE_WIDE;
232+
PeriphClkInitStruct.PLL2.PLL2FRACN = 0;
233+
PeriphClkInitStruct.PLL2.PLL2ClockOut = RCC_PLL2_DIVQ | RCC_PLL2_DIVR;
234+
PeriphClkInitStruct.Lpuart1ClockSelection = RCC_LPUART1CLKSOURCE_PLL2Q;
235+
PeriphClkInitStruct.Sdmmc1ClockSelection = RCC_SDMMC1CLKSOURCE_PLL2R;
236+
PeriphClkInitStruct.Sdmmc2ClockSelection = RCC_SDMMC2CLKSOURCE_PLL2R;
237+
PeriphClkInitStruct.PLL3.PLL3Source = RCC_PLL3_SOURCE_HSE;
238+
PeriphClkInitStruct.PLL3.PLL3M = 2;
239+
PeriphClkInitStruct.PLL3.PLL3N = 96;
240+
PeriphClkInitStruct.PLL3.PLL3P = 4;
241+
PeriphClkInitStruct.PLL3.PLL3Q = 8;
242+
PeriphClkInitStruct.PLL3.PLL3R = 2;
243+
PeriphClkInitStruct.PLL3.PLL3RGE = RCC_PLL3_VCIRANGE_0;
244+
PeriphClkInitStruct.PLL3.PLL3VCOSEL = RCC_PLL3_VCORANGE_MEDIUM;
245+
PeriphClkInitStruct.PLL3.PLL3FRACN = 0;
246+
PeriphClkInitStruct.PLL3.PLL3ClockOut = RCC_PLL3_DIVP | RCC_PLL3_DIVQ;
247+
PeriphClkInitStruct.UsbClockSelection = RCC_USBCLKSOURCE_PLL3Q;
248+
PeriphClkInitStruct.Spi1ClockSelection = RCC_SPI1CLKSOURCE_PLL3P;
249+
PeriphClkInitStruct.Spi2ClockSelection = RCC_SPI2CLKSOURCE_PLL3P;
250+
PeriphClkInitStruct.Spi3ClockSelection = RCC_SPI3CLKSOURCE_PLL3P;
251+
PeriphClkInitStruct.Spi4ClockSelection = RCC_SPI4CLKSOURCE_PLL3Q;
252+
PeriphClkInitStruct.Spi5ClockSelection = RCC_SPI5CLKSOURCE_PLL3Q;
253+
PeriphClkInitStruct.Spi6ClockSelection = RCC_SPI6CLKSOURCE_PLL3Q;
254+
if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK) {
255+
Error_Handler();
256+
}
257+
}
258+
259+
#ifdef __cplusplus
260+
} // extern "C"
261+
#endif
262+
#endif /* ARDUINO_NUCLEO_H563ZI */

0 commit comments

Comments
 (0)