Skip to content

Commit 4cc937f

Browse files
committed
[variant] Add Generic L5xx and Nucleo L552ZE-Q
Supersede stm32duino#1256 Signed-off-by: Frederic Pillon <[email protected]>
1 parent e9ac089 commit 4cc937f

File tree

6 files changed

+841
-2
lines changed

6 files changed

+841
-2
lines changed

Diff for: README.md

+9
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ User can add a STM32 based board following this [wiki](https://github.com/stm32d
6161
- [Generic STM32H7 boards](#generic-stm32h7-boards)
6262
- [Generic STM32L0 boards](#generic-stm32l0-boards)
6363
- [Generic STM32L4 boards](#generic-stm32l4-boards)
64+
- [Generic STM32L5 boards](#generic-stm32l5-boards)
6465
- [3D printer boards](#3d-printer-boards)
6566
- [LoRa boards](#lora-boards)
6667
- [Electronic Speed Controller boards](#electronic-speed-controller-boards)
@@ -82,6 +83,7 @@ User can add a STM32 based board following this [wiki](https://github.com/stm32d
8283
| :green_heart: | STM32L496ZG-P | [Nucleo L496ZG-P](http://www.st.com/en/evaluation-tools/nucleo-l496zg-p.html) | *1.3.0* | |
8384
| :green_heart: | STM32L4R5ZI | [Nucleo L4R5ZI](http://www.st.com/en/evaluation-tools/nucleo-l4r5zi.html) | *1.4.0* | |
8485
| :green_heart: | STM32L4R5ZI-P | [Nucleo L4R5ZI-P](http://www.st.com/en/evaluation-tools/nucleo-l4r5zi-p.html) | *1.4.0* | |
86+
| :yellow_heart: | STM32L552ZE-Q | [Nucleo L552ZE-Q](https://www.st.com/en/evaluation-tools/nucleo-l552ze-q.html) | **2.0.0** | |
8587
| :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 |
8688

8789
### [Nucleo 64](https://www.st.com/content/st_com/en/products/evaluation-tools/product-evaluation-tools/mcu-eval-tools/stm32-mcu-eval-tools/stm32-nucleo-boards.html) boards
@@ -299,6 +301,13 @@ User can add a STM32 based board following this [wiki](https://github.com/stm32d
299301
| :yellow_heart: | STM32L4S7ZITx | Generic Board | **2.0.0** | |
300302
| :yellow_heart: | STM32L4S9ZIJx | Generic Board | **2.0.0** | |
301303

304+
### Generic STM32L5 boards
305+
306+
| Status | Device(s) | Name | Release | Notes |
307+
| :----: | :-------: | ---- | :-----: | :---- |
308+
| :yellow_heart: | STM32L552ZC-Q<br>STM32L552ZE-Q | Generic Board | **2.0.0** | |
309+
| :yellow_heart: | STM32L562ZE-Q | Generic Board | **2.0.0** | |
310+
302311
### 3D printer boards
303312

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

Diff for: boards.txt

+113
Original file line numberDiff line numberDiff line change
@@ -167,6 +167,19 @@ Nucleo_144.menu.pnum.NUCLEO_L4R5ZI_P.build.product_line=STM32L4R5xx
167167
Nucleo_144.menu.pnum.NUCLEO_L4R5ZI_P.build.variant=STM32L4xx/L4R5ZITxP
168168
Nucleo_144.menu.pnum.NUCLEO_L4R5ZI_P.build.cmsis_lib_gcc=arm_cortexM4lf_math
169169

170+
# NUCLEO_L552ZE-Q board
171+
Nucleo_144.menu.pnum.NUCLEO_L552ZE_Q=Nucleo L552ZE-Q
172+
Nucleo_144.menu.pnum.NUCLEO_L552ZE_Q.node=NODE_L552ZE
173+
Nucleo_144.menu.pnum.NUCLEO_L552ZE_Q.upload.maximum_size=524288
174+
Nucleo_144.menu.pnum.NUCLEO_L552ZE_Q.upload.maximum_data_size=196608
175+
Nucleo_144.menu.pnum.NUCLEO_L552ZE_Q.build.mcu=cortex-m33
176+
Nucleo_144.menu.pnum.NUCLEO_L552ZE_Q.build.flags.fp=-mfpu=fpv4-sp-d16 -mfloat-abi=hard
177+
Nucleo_144.menu.pnum.NUCLEO_L552ZE_Q.build.board=NUCLEO_L552ZE_Q
178+
Nucleo_144.menu.pnum.NUCLEO_L552ZE_Q.build.series=STM32L5xx
179+
Nucleo_144.menu.pnum.NUCLEO_L552ZE_Q.build.product_line=STM32L552xx
180+
Nucleo_144.menu.pnum.NUCLEO_L552ZE_Q.build.variant=STM32L5xx/L552Z(C-E)TxQ_L562ZETxQ
181+
Nucleo_144.menu.pnum.NUCLEO_L552ZE_Q.build.cmsis_lib_gcc=arm_ARMv8MMLlfsp_math
182+
170183
# Upload menu
171184
Nucleo_144.menu.upload_method.MassStorage=Mass Storage
172185
Nucleo_144.menu.upload_method.MassStorage.upload.protocol=
@@ -2980,6 +2993,58 @@ GenL4.menu.upload_method.dfuMethod.upload.options=-g
29802993
GenL4.menu.upload_method.dfuMethod.upload.tool=stm32CubeProg
29812994

29822995
################################################################################
2996+
# Generic L5
2997+
GenL5.name=Generic STM32L5 series
2998+
2999+
GenL5.build.core=arduino
3000+
GenL5.build.board=GenL5
3001+
GenL5.build.extra_flags=-D{build.product_line} {build.enable_usb} {build.xSerial}
3002+
GenL5.build.mcu=cortex-m33
3003+
GenL5.build.flags.fp=-mfpu=fpv4-sp-d16 -mfloat-abi=hard
3004+
GenL5.build.series=STM32L5xx
3005+
GenL5.build.cmsis_lib_gcc=arm_ARMv8MMLlfsp_math
3006+
3007+
# Generic L552ZCTxQ
3008+
GenL5.menu.pnum.GENERIC_L552ZCTXQ=Generic L552ZCTxQ
3009+
GenL5.menu.pnum.GENERIC_L552ZCTXQ.upload.maximum_size=262144
3010+
GenL5.menu.pnum.GENERIC_L552ZCTXQ.upload.maximum_data_size=196608
3011+
GenL5.menu.pnum.GENERIC_L552ZCTXQ.build.board=GENERIC_L552ZCTXQ
3012+
GenL5.menu.pnum.GENERIC_L552ZCTXQ.build.product_line=STM32L552xx
3013+
GenL5.menu.pnum.GENERIC_L552ZCTXQ.build.variant=STM32L5xx/L552Z(C-E)TxQ_L562ZETxQ
3014+
3015+
# Generic L552ZETxQ
3016+
GenL5.menu.pnum.GENERIC_L552ZETXQ=Generic L552ZETxQ
3017+
GenL5.menu.pnum.GENERIC_L552ZETXQ.upload.maximum_size=524288
3018+
GenL5.menu.pnum.GENERIC_L552ZETXQ.upload.maximum_data_size=196608
3019+
GenL5.menu.pnum.GENERIC_L552ZETXQ.build.board=GENERIC_L552ZETXQ
3020+
GenL5.menu.pnum.GENERIC_L552ZETXQ.build.product_line=STM32L552xx
3021+
GenL5.menu.pnum.GENERIC_L552ZETXQ.build.variant=STM32L5xx/L552Z(C-E)TxQ_L562ZETxQ
3022+
3023+
# Generic L562ZETxQ
3024+
GenL5.menu.pnum.GENERIC_L562ZETXQ=Generic L562ZETxQ
3025+
GenL5.menu.pnum.GENERIC_L562ZETXQ.upload.maximum_size=524288
3026+
GenL5.menu.pnum.GENERIC_L562ZETXQ.upload.maximum_data_size=196608
3027+
GenL5.menu.pnum.GENERIC_L562ZETXQ.build.board=GENERIC_L562ZETXQ
3028+
GenL5.menu.pnum.GENERIC_L562ZETXQ.build.product_line=STM32L562xx
3029+
GenL5.menu.pnum.GENERIC_L562ZETXQ.build.variant=STM32L5xx/L552Z(C-E)TxQ_L562ZETxQ
3030+
3031+
# Upload menu
3032+
GenL5.menu.upload_method.swdMethod=STM32CubeProgrammer (SWD)
3033+
GenL5.menu.upload_method.swdMethod.upload.protocol=0
3034+
GenL5.menu.upload_method.swdMethod.upload.options=-g
3035+
GenL5.menu.upload_method.swdMethod.upload.tool=stm32CubeProg
3036+
3037+
GenL5.menu.upload_method.serialMethod=STM32CubeProgrammer (Serial)
3038+
GenL5.menu.upload_method.serialMethod.upload.protocol=1
3039+
GenL5.menu.upload_method.serialMethod.upload.options={serial.port.file} -s
3040+
GenL5.menu.upload_method.serialMethod.upload.tool=stm32CubeProg
3041+
3042+
GenL5.menu.upload_method.dfuMethod=STM32CubeProgrammer (DFU)
3043+
GenL5.menu.upload_method.dfuMethod.upload.protocol=2
3044+
GenL5.menu.upload_method.dfuMethod.upload.options=-g
3045+
GenL5.menu.upload_method.dfuMethod.upload.tool=stm32CubeProg
3046+
3047+
#################################################################################
29833048
# Electronic Speed Controller boards
29843049

29853050
ESC_board.name=Electronic speed controllers
@@ -3590,6 +3655,12 @@ GenL4.menu.xserial.none.build.xSerial=-DHAL_UART_MODULE_ENABLED -DHWSERIAL_NONE
35903655
GenL4.menu.xserial.disabled=Disabled (no Serial support)
35913656
GenL4.menu.xserial.disabled.build.xSerial=
35923657

3658+
GenL5.menu.xserial.generic=Enabled (generic 'Serial')
3659+
GenL5.menu.xserial.none=Enabled (no generic 'Serial')
3660+
GenL5.menu.xserial.none.build.xSerial=-DHAL_UART_MODULE_ENABLED -DHWSERIAL_NONE
3661+
GenL5.menu.xserial.disabled=Disabled (no Serial support)
3662+
GenL5.menu.xserial.disabled.build.xSerial=
3663+
35933664
ESC_board.menu.xserial.generic=Enabled (generic 'Serial')
35943665
ESC_board.menu.xserial.none=Enabled (no generic 'Serial')
35953666
ESC_board.menu.xserial.none.build.xSerial=-DHAL_UART_MODULE_ENABLED -DHWSERIAL_NONE
@@ -3797,6 +3868,19 @@ GenL4.menu.xusb.HS.build.usb_speed=-DUSE_USB_HS
37973868
GenL4.menu.xusb.HSFS=High Speed in Full Speed mode
37983869
GenL4.menu.xusb.HSFS.build.usb_speed=-DUSE_USB_HS -DUSE_USB_HS_IN_FS
37993870

3871+
GenL5.menu.usb.none=None
3872+
GenL5.menu.usb.CDCgen=CDC (generic 'Serial' supersede U(S)ART)
3873+
GenL5.menu.usb.CDCgen.build.enable_usb={build.usb_flags} -DUSBD_USE_CDC
3874+
GenL5.menu.usb.CDC=CDC (no generic 'Serial')
3875+
GenL5.menu.usb.CDC.build.enable_usb={build.usb_flags} -DUSBD_USE_CDC -DDISABLE_GENERIC_SERIALUSB
3876+
GenL5.menu.usb.HID=HID (keyboard and mouse)
3877+
GenL5.menu.usb.HID.build.enable_usb={build.usb_flags} -DUSBD_USE_HID_COMPOSITE
3878+
GenL5.menu.xusb.FS=Low/Full Speed
3879+
GenL5.menu.xusb.HS=High Speed
3880+
GenL5.menu.xusb.HS.build.usb_speed=-DUSE_USB_HS
3881+
GenL5.menu.xusb.HSFS=High Speed in Full Speed mode
3882+
GenL5.menu.xusb.HSFS.build.usb_speed=-DUSE_USB_HS -DUSE_USB_HS_IN_FS
3883+
38003884
3dprinter.menu.usb.none=None
38013885
3dprinter.menu.usb.CDCgen=CDC (generic 'Serial' supersede U(S)ART)
38023886
3dprinter.menu.usb.CDCgen.build.enable_usb={build.usb_flags} -DUSBD_USE_CDC
@@ -4135,6 +4219,25 @@ GenL4.menu.opt.o3lto.build.flags.optimize=-O3 -flto
41354219
GenL4.menu.opt.ogstd=Debug (-g)
41364220
GenL4.menu.opt.ogstd.build.flags.optimize=-g -Og
41374221

4222+
GenL5.menu.opt.osstd=Smallest (-Os default)
4223+
GenL5.menu.opt.osstd.build.flags.optimize=-Os
4224+
GenL5.menu.opt.oslto=Smallest (-Os) with LTO
4225+
GenL5.menu.opt.oslto.build.flags.optimize=-Os -flto
4226+
GenL5.menu.opt.o1std=Fast (-O1)
4227+
GenL5.menu.opt.o1std.build.flags.optimize=-O1
4228+
GenL5.menu.opt.o1lto=Fast (-O1) with LTO
4229+
GenL5.menu.opt.o1lto.build.flags.optimize=-O1 -flto
4230+
GenL5.menu.opt.o2std=Faster (-O2)
4231+
GenL5.menu.opt.o2std.build.flags.optimize=-O2
4232+
GenL5.menu.opt.o2lto=Faster (-O2) with LTO
4233+
GenL5.menu.opt.o2lto.build.flags.optimize=-O2 -flto
4234+
GenL5.menu.opt.o3std=Fastest (-O3)
4235+
GenL5.menu.opt.o3std.build.flags.optimize=-O3
4236+
GenL5.menu.opt.o3lto=Fastest (-O3) with LTO
4237+
GenL5.menu.opt.o3lto.build.flags.optimize=-O3 -flto
4238+
GenL5.menu.opt.ogstd=Debug (-g)
4239+
GenL5.menu.opt.ogstd.build.flags.optimize=-g -Og
4240+
41384241
ESC_board.menu.opt.osstd=Smallest (-Os default)
41394242
ESC_board.menu.opt.oslto=Smallest (-Os) with LTO
41404243
ESC_board.menu.opt.oslto.build.flags.optimize=-Os -flto
@@ -4404,6 +4507,16 @@ GenL4.menu.rtlib.nanofps.build.flags.ldspecs=--specs=nano.specs -u _printf_float
44044507
GenL4.menu.rtlib.full=Newlib Standard
44054508
GenL4.menu.rtlib.full.build.flags.ldspecs=
44064509

4510+
GenL5.menu.rtlib.nano=Newlib Nano (default)
4511+
GenL5.menu.rtlib.nanofp=Newlib Nano + Float Printf
4512+
GenL5.menu.rtlib.nanofp.build.flags.ldspecs=--specs=nano.specs -u _printf_float
4513+
GenL5.menu.rtlib.nanofs=Newlib Nano + Float Scanf
4514+
GenL5.menu.rtlib.nanofs.build.flags.ldspecs=--specs=nano.specs -u _scanf_float
4515+
GenL5.menu.rtlib.nanofps=Newlib Nano + Float Printf/Scanf
4516+
GenL5.menu.rtlib.nanofps.build.flags.ldspecs=--specs=nano.specs -u _printf_float -u _scanf_float
4517+
GenL5.menu.rtlib.full=Newlib Standard
4518+
GenL5.menu.rtlib.full.build.flags.ldspecs=
4519+
44074520
ESC_board.menu.rtlib.nano=Newlib Nano (default)
44084521
ESC_board.menu.rtlib.nanofp=Newlib Nano + Float Printf
44094522
ESC_board.menu.rtlib.nanofp.build.flags.ldspecs=--specs=nano.specs -u _printf_float

Diff for: variants/STM32L5xx/L552Z(C-E)TxQ_L562ZETxQ/generic_clock.c

+36-2
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,42 @@
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+
27+
/** Configure the main internal regulator output voltage
28+
*/
29+
if (HAL_PWREx_ControlVoltageScaling(PWR_REGULATOR_VOLTAGE_SCALE0) != HAL_OK) {
30+
Error_Handler();
31+
}
32+
/** Initializes the RCC Oscillators according to the specified parameters
33+
* in the RCC_OscInitTypeDef structure.
34+
*/
35+
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
36+
RCC_OscInitStruct.HSIState = RCC_HSI_ON;
37+
RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
38+
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
39+
RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI;
40+
RCC_OscInitStruct.PLL.PLLM = 4;
41+
RCC_OscInitStruct.PLL.PLLN = 55;
42+
RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV7;
43+
RCC_OscInitStruct.PLL.PLLQ = RCC_PLLQ_DIV2;
44+
RCC_OscInitStruct.PLL.PLLR = RCC_PLLR_DIV2;
45+
if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) {
46+
Error_Handler();
47+
}
48+
/** Initializes the CPU, AHB and APB buses clocks
49+
*/
50+
RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_SYSCLK
51+
| RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2;
52+
RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
53+
RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
54+
RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
55+
RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
56+
57+
if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_5) != HAL_OK) {
58+
Error_Handler();
59+
}
2660
}
2761

2862
#endif /* ARDUINO_GENERIC_* */

0 commit comments

Comments
 (0)