Skip to content

Commit ee5346d

Browse files
committed
variant(c5): add Nucleo-C562RE support
Signed-off-by: Frederic Pillon <frederic.pillon@st.com>
1 parent d28935c commit ee5346d

5 files changed

Lines changed: 463 additions & 0 deletions

File tree

‎boards.txt‎

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -527,6 +527,22 @@ Nucleo_64.menu.pnum.NUCLEO_C092RC.build.st_extra_flags=-DSTM32C092xx {build.xSer
527527
Nucleo_64.menu.pnum.NUCLEO_C092RC.openocd.target=stm32c0x
528528
Nucleo_64.menu.pnum.NUCLEO_C092RC.debug.svd_file={runtime.tools.STM32_SVD.path}/svd/STM32C0xx/STM32C092.svd
529529

530+
# NUCLEO_C562RE board
531+
Nucleo_64.menu.pnum.NUCLEO_C562RE=Nucleo C562RE
532+
Nucleo_64.menu.pnum.NUCLEO_C562RE.node="NOD_C562RE"
533+
Nucleo_64.menu.pnum.NUCLEO_C562RE.upload.maximum_size=524288
534+
Nucleo_64.menu.pnum.NUCLEO_C562RE.upload.maximum_data_size=131072
535+
Nucleo_64.menu.pnum.NUCLEO_C562RE.build.mcu=cortex-m33
536+
Nucleo_64.menu.pnum.NUCLEO_C562RE.build.fpu=-mfpu=fpv5-sp-d16
537+
Nucleo_64.menu.pnum.NUCLEO_C562RE.build.float-abi=-mfloat-abi=hard
538+
Nucleo_64.menu.pnum.NUCLEO_C562RE.build.hal=-DUSE_HALV2_DRIVER
539+
Nucleo_64.menu.pnum.NUCLEO_C562RE.build.board=NUCLEO_C562RE
540+
Nucleo_64.menu.pnum.NUCLEO_C562RE.build.series=STM32C5xx
541+
Nucleo_64.menu.pnum.NUCLEO_C562RE.build.product_line=STM32C562xx
542+
Nucleo_64.menu.pnum.NUCLEO_C562RE.build.variant=STM32C5xx/C552R(C-E)T_C562RET
543+
# Nucleo_64.menu.pnum.NUCLEO_C562RE.openocd.target=stm32c5x
544+
Nucleo_64.menu.pnum.NUCLEO_C562RE.debug.svd_file={runtime.tools.STM32_SVD.path}/svd/STM32C5xx/STM32C562.svd
545+
530546
# NUCLEO_F030R8 board
531547
Nucleo_64.menu.pnum.NUCLEO_F030R8=Nucleo F030R8
532548
Nucleo_64.menu.pnum.NUCLEO_F030R8.node="NODE_F030R8,NUCLEO"

‎cmake/boards_db.cmake‎

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106025,6 +106025,85 @@ target_compile_options(NUCLEO_C092RC_xusb_HSFS INTERFACE
106025106025
"SHELL:-DUSE_USB_HS -DUSE_USB_HS_IN_FS"
106026106026
)
106027106027

106028+
# NUCLEO_C562RE
106029+
# -----------------------------------------------------------------------------
106030+
106031+
set(NUCLEO_C562RE_VARIANT_PATH "${CMAKE_CURRENT_LIST_DIR}/../variants/STM32C5xx/C552R(C-E)T_C562RET")
106032+
set(NUCLEO_C562RE_MAXSIZE 524288)
106033+
set(NUCLEO_C562RE_MAXDATASIZE 131072)
106034+
set(NUCLEO_C562RE_MCU cortex-m33)
106035+
set(NUCLEO_C562RE_FPCONF "fpv5-sp-d16-hard")
106036+
add_library(NUCLEO_C562RE INTERFACE)
106037+
target_compile_options(NUCLEO_C562RE INTERFACE
106038+
"SHELL:-DUSE_HALV2_DRIVER"
106039+
"SHELL:-DSTM32C562xx"
106040+
"SHELL:-mfpu=fpv5-sp-d16 -mfloat-abi=hard"
106041+
-mcpu=${NUCLEO_C562RE_MCU}
106042+
)
106043+
target_compile_definitions(NUCLEO_C562RE INTERFACE
106044+
"STM32C5xx"
106045+
"ARDUINO_NUCLEO_C562RE"
106046+
"BOARD_NAME=\"NUCLEO_C562RE\""
106047+
"BOARD_ID=NUCLEO_C562RE"
106048+
"VARIANT_H=\"variant_NUCLEO_C562RE.h\""
106049+
)
106050+
target_include_directories(NUCLEO_C562RE INTERFACE
106051+
${CMAKE_CURRENT_LIST_DIR}/../system/STM32C5xx
106052+
${CMAKE_CURRENT_LIST_DIR}/../system/Drivers/STM32C5xx_HAL_Driver/Inc
106053+
${CMAKE_CURRENT_LIST_DIR}/../system/Drivers/STM32C5xx_HAL_Driver/Src
106054+
${CMAKE_CURRENT_LIST_DIR}/../system/Drivers/CMSIS/Device/ST/STM32C5xx/Include/
106055+
${CMAKE_CURRENT_LIST_DIR}/../system/Drivers/CMSIS/Device/ST/STM32C5xx/Source/
106056+
${CMAKE_CURRENT_LIST_DIR}/../system/Drivers/CMSIS/Device/ST/STM32C5xx/Source/Templates/gcc/
106057+
${NUCLEO_C562RE_VARIANT_PATH}
106058+
)
106059+
106060+
target_link_options(NUCLEO_C562RE INTERFACE
106061+
"LINKER:--default-script=${NUCLEO_C562RE_VARIANT_PATH}/ldscript.ld"
106062+
"LINKER:--defsym=LD_FLASH_OFFSET=0x0"
106063+
"LINKER:--defsym=LD_MAX_SIZE=524288"
106064+
"LINKER:--defsym=LD_MAX_DATA_SIZE=131072"
106065+
"SHELL:-mfpu=fpv5-sp-d16 -mfloat-abi=hard"
106066+
-mcpu=${NUCLEO_C562RE_MCU}
106067+
)
106068+
106069+
add_library(NUCLEO_C562RE_serial_disabled INTERFACE)
106070+
target_compile_options(NUCLEO_C562RE_serial_disabled INTERFACE
106071+
)
106072+
add_library(NUCLEO_C562RE_serial_generic INTERFACE)
106073+
target_compile_options(NUCLEO_C562RE_serial_generic INTERFACE
106074+
"SHELL:-DHAL_UART_MODULE_ENABLED"
106075+
)
106076+
add_library(NUCLEO_C562RE_serial_none INTERFACE)
106077+
target_compile_options(NUCLEO_C562RE_serial_none INTERFACE
106078+
"SHELL:-DHAL_UART_MODULE_ENABLED -DHWSERIAL_NONE"
106079+
)
106080+
add_library(NUCLEO_C562RE_usb_CDC INTERFACE)
106081+
target_compile_options(NUCLEO_C562RE_usb_CDC INTERFACE
106082+
"SHELL:-DUSBCON -DUSBD_VID=0x0483 -DUSBD_PID=0x5740 -DHAL_PCD_MODULE_ENABLED -DUSBD_USE_CDC -DDISABLE_GENERIC_SERIALUSB"
106083+
)
106084+
add_library(NUCLEO_C562RE_usb_CDCgen INTERFACE)
106085+
target_compile_options(NUCLEO_C562RE_usb_CDCgen INTERFACE
106086+
"SHELL:-DUSBCON -DUSBD_VID=0x0483 -DUSBD_PID=0x5740 -DHAL_PCD_MODULE_ENABLED -DUSBD_USE_CDC"
106087+
)
106088+
add_library(NUCLEO_C562RE_usb_HID INTERFACE)
106089+
target_compile_options(NUCLEO_C562RE_usb_HID INTERFACE
106090+
"SHELL:-DUSBCON -DUSBD_VID=0x0483 -DUSBD_PID=0x5740 -DHAL_PCD_MODULE_ENABLED -DUSBD_USE_HID_COMPOSITE"
106091+
)
106092+
add_library(NUCLEO_C562RE_usb_none INTERFACE)
106093+
target_compile_options(NUCLEO_C562RE_usb_none INTERFACE
106094+
)
106095+
add_library(NUCLEO_C562RE_xusb_FS INTERFACE)
106096+
target_compile_options(NUCLEO_C562RE_xusb_FS INTERFACE
106097+
)
106098+
add_library(NUCLEO_C562RE_xusb_HS INTERFACE)
106099+
target_compile_options(NUCLEO_C562RE_xusb_HS INTERFACE
106100+
"SHELL:-DUSE_USB_HS"
106101+
)
106102+
add_library(NUCLEO_C562RE_xusb_HSFS INTERFACE)
106103+
target_compile_options(NUCLEO_C562RE_xusb_HSFS INTERFACE
106104+
"SHELL:-DUSE_USB_HS -DUSE_USB_HS_IN_FS"
106105+
)
106106+
106028106107
# NUCLEO_F030R8
106029106108
# -----------------------------------------------------------------------------
106030106109

‎variants/STM32C5xx/C552R(C-E)T_C562RET/CMakeLists.txt‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ add_library(variant_bin STATIC EXCLUDE_FROM_ALL
2222
generic_clock.c
2323
PeripheralPins.c
2424
variant_generic.cpp
25+
variant_NUCLEO_C562RE.cpp
2526
)
2627
target_link_libraries(variant_bin PUBLIC variant_usage)
2728

Lines changed: 160 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,160 @@
1+
/*
2+
*******************************************************************************
3+
* Copyright (c) 2020-2026, 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_C562RE)
14+
#include "pins_arduino.h"
15+
16+
// Digital PinName array
17+
const PinName digitalPin[] = {
18+
PB_15, // D0
19+
PB_14, // D1
20+
PA_10, // D2
21+
PB_3, // D3
22+
PC_1, // D4/A6
23+
PB_4, // D5
24+
PB_10, // D6
25+
PA_8, // D7
26+
PA_9, // D8
27+
PC_6, // D9
28+
PC_9, // D10/A7
29+
PA_7, // D11/A8
30+
PA_6, // D12/A9
31+
PA_5, // D13
32+
PB_7, // D14
33+
PB_6, // D15
34+
PC_10, // D16
35+
PC_12, // D17
36+
PH_2, // D18
37+
PA_2, // D19/A15
38+
PA_3, // D20/A16
39+
PA_13, // D21
40+
PA_14, // D22
41+
PA_15, // D23
42+
PE_2, // D24
43+
PC_13, // D25
44+
PC_14, // D26
45+
PC_15, // D27
46+
PH_0, // D28
47+
PH_1, // D29
48+
PC_2, // D30/A10
49+
PC_3, // D31/A11
50+
PC_11, // D32
51+
PD_2, // D33
52+
PA_0, // D34/A0
53+
PA_1, // D35/A1
54+
PA_4, // D36/A2
55+
PB_0, // D37/A3
56+
PC_5, // D38/A4
57+
PC_0, // D39/A5
58+
PC_8, // D40
59+
PC_7, // D41
60+
PB_5, // D42
61+
PA_12, // D43
62+
PA_11, // D44
63+
PB_12, // D45
64+
PB_1, // D46/A12
65+
PB_2, // D47/A13
66+
PB_13, // D48
67+
PC_4, // D49/A14
68+
PB_8, // D50
69+
PB_9 // D51
70+
};
71+
72+
// Analog (Ax) pin number array
73+
const uint32_t analogInputPin[] = {
74+
34, // A0, PA0
75+
35, // A1, PA1
76+
36, // A2, PA4
77+
37, // A3, PB0
78+
38, // A4, PC5
79+
39, // A5, PC0
80+
4, // A6, PC1
81+
11, // A7, PA7
82+
12, // A8, PA6
83+
13, // A9, PA5
84+
30, // A10, PC2
85+
31, // A11, PC3
86+
46, // A12, PB1
87+
47, // A13, PB2
88+
49, // A14, PC4
89+
19, // A15, PA2
90+
20 // A16, PA3
91+
};
92+
93+
// ----------------------------------------------------------------------------
94+
#ifdef __cplusplus
95+
extern "C" {
96+
#endif
97+
98+
/**
99+
* @brief System Clock Configuration
100+
* @retval None
101+
*/
102+
void SystemClock_Config(void)
103+
{
104+
if (HAL_RCC_HSE_Enable(HAL_RCC_HSE_ON) != HAL_OK) {
105+
Error_Handler();
106+
}
107+
108+
hal_rcc_psi_config_t config_psi;
109+
config_psi.psi_source = HAL_RCC_PSI_SRC_HSE;
110+
config_psi.psi_ref = HAL_RCC_PSI_REF_24MHZ;
111+
config_psi.psi_out = HAL_RCC_PSI_OUT_144MHZ;
112+
if (HAL_RCC_PSI_SetConfig(&config_psi) != HAL_OK) {
113+
Error_Handler();
114+
}
115+
116+
if (HAL_RCC_PSIS_Enable() != HAL_OK) {
117+
Error_Handler();
118+
}
119+
120+
/** Initializes the CPU, AHB and APB busses clocks */
121+
hal_rcc_bus_clk_config_t config_bus;
122+
config_bus.hclk_prescaler = HAL_RCC_HCLK_PRESCALER1;
123+
config_bus.pclk1_prescaler = HAL_RCC_PCLK_PRESCALER1;
124+
config_bus.pclk2_prescaler = HAL_RCC_PCLK_PRESCALER1;
125+
config_bus.pclk3_prescaler = HAL_RCC_PCLK_PRESCALER4;
126+
if (HAL_RCC_SetBusClockConfig(&config_bus) != HAL_OK) {
127+
Error_Handler();
128+
}
129+
130+
/** Frequency will be increased */
131+
HAL_FLASH_ITF_SetLatency(HAL_FLASH, HAL_FLASH_ITF_LATENCY_4);
132+
133+
if (HAL_RCC_SetSYSCLKSource(HAL_RCC_SYSCLK_SRC_PSIS) != HAL_OK) {
134+
Error_Handler();
135+
}
136+
137+
HAL_FLASH_ITF_SetProgrammingDelay(HAL_FLASH, HAL_FLASH_ITF_PROGRAM_DELAY_2);
138+
139+
if (HAL_UpdateCoreClock() != HAL_OK) {
140+
Error_Handler();
141+
}
142+
143+
/* Peripherals using PCLK3 (36 MHz):
144+
LPUART1
145+
*/
146+
147+
/* Peripherals using HSIDIV3 (48 MHz):
148+
USB
149+
*/
150+
if (HAL_RCC_HSIDIV3_Enable() != HAL_OK) {
151+
Error_Handler();
152+
}
153+
154+
}
155+
156+
157+
#ifdef __cplusplus
158+
}
159+
#endif
160+
#endif /* ARDUINO_NUCLEO_C562RE */

0 commit comments

Comments
 (0)