Skip to content

Commit 7a11454

Browse files
committed
variant(c5): add generic C552R(C-E)T and C562RET
Signed-off-by: Frederic Pillon <frederic.pillon@st.com>
1 parent 0d05c1b commit 7a11454

3 files changed

Lines changed: 396 additions & 2 deletions

File tree

‎boards.txt‎

Lines changed: 128 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2134,6 +2134,88 @@ GenC0.menu.upload_method.OpenOCDDapLink.upload.tool=openocd_upload
21342134
GenC0.menu.upload_method.OpenOCDDapLink.debug.server.openocd.scripts.0=interface/cmsis-dap.cfg
21352135
GenC0.menu.upload_method.OpenOCDDapLink.debug.server.openocd.scripts.1={runtime.platform.path}/debugger/select_swd.cfg
21362136

2137+
################################################################################
2138+
# Generic C5
2139+
GenC5.name=Generic STM32C5 series
2140+
2141+
GenC5.build.core=arduino
2142+
GenC5.build.board=GenC5
2143+
GenC5.build.st_extra_flags=-D{build.product_line} {build.enable_usb} {build.xSerial}
2144+
GenC5.build.mcu=cortex-m33
2145+
GenC5.build.fpu=-mfpu=fpv5-sp-d16
2146+
GenC5.build.float-abi=-mfloat-abi=hard
2147+
GenC5.build.series=STM32C5xx
2148+
GenC5.build.hal=-DUSE_HALV2_DRIVER
2149+
GenC5.build.flash_offset=0x0
2150+
GenC5.upload.maximum_size=0
2151+
GenC5.upload.maximum_data_size=0
2152+
# Current openocd version does not support C5
2153+
# GenC5.openocd.target=stm32c5x
2154+
GenC5.vid.0=0x0483
2155+
GenC5.pid.0=0x5740
2156+
2157+
# Generic C552RCTx
2158+
GenC5.menu.pnum.GENERIC_C552RCTX=Generic C552RCTx
2159+
GenC5.menu.pnum.GENERIC_C552RCTX.upload.maximum_size=262144
2160+
GenC5.menu.pnum.GENERIC_C552RCTX.upload.maximum_data_size=131072
2161+
GenC5.menu.pnum.GENERIC_C552RCTX.build.board=GENERIC_C552RCTX
2162+
GenC5.menu.pnum.GENERIC_C552RCTX.build.product_line=STM32C552xx
2163+
GenC5.menu.pnum.GENERIC_C552RCTX.build.variant=STM32C5xx/C552R(C-E)T_C562RET
2164+
GenC5.menu.pnum.GENERIC_C552RCTX.debug.svd_file={runtime.tools.STM32_SVD.path}/svd/STM32C5xx/STM32C552.svd
2165+
2166+
# Generic C552RETx
2167+
GenC5.menu.pnum.GENERIC_C552RETX=Generic C552RETx
2168+
GenC5.menu.pnum.GENERIC_C552RETX.upload.maximum_size=524288
2169+
GenC5.menu.pnum.GENERIC_C552RETX.upload.maximum_data_size=131072
2170+
GenC5.menu.pnum.GENERIC_C552RETX.build.board=GENERIC_C552RETX
2171+
GenC5.menu.pnum.GENERIC_C552RETX.build.product_line=STM32C552xx
2172+
GenC5.menu.pnum.GENERIC_C552RETX.build.variant=STM32C5xx/C552R(C-E)T_C562RET
2173+
GenC5.menu.pnum.GENERIC_C552RETX.debug.svd_file={runtime.tools.STM32_SVD.path}/svd/STM32C5xx/STM32C552.svd
2174+
2175+
# Generic C562RETx
2176+
GenC5.menu.pnum.GENERIC_C562RETX=Generic C562RETx
2177+
GenC5.menu.pnum.GENERIC_C562RETX.upload.maximum_size=524288
2178+
GenC5.menu.pnum.GENERIC_C562RETX.upload.maximum_data_size=131072
2179+
GenC5.menu.pnum.GENERIC_C562RETX.build.board=GENERIC_C562RETX
2180+
GenC5.menu.pnum.GENERIC_C562RETX.build.product_line=STM32C562xx
2181+
GenC5.menu.pnum.GENERIC_C562RETX.build.variant=STM32C5xx/C552R(C-E)T_C562RET
2182+
GenC5.menu.pnum.GENERIC_C562RETX.debug.svd_file={runtime.tools.STM32_SVD.path}/svd/STM32C5xx/STM32C562.svd
2183+
2184+
# Upload menu
2185+
GenC5.menu.upload_method.swdMethod=STM32CubeProgrammer (SWD)
2186+
GenC5.menu.upload_method.swdMethod.upload.protocol=swd
2187+
GenC5.menu.upload_method.swdMethod.upload.options=-a {upload.address} -m {upload.mode} -s {upload.start}
2188+
GenC5.menu.upload_method.swdMethod.upload.tool=stm32CubeProg
2189+
2190+
GenC5.menu.upload_method.jlinkMethod=STM32CubeProgrammer (J-Link)
2191+
GenC5.menu.upload_method.jlinkMethod.upload.protocol=jlink
2192+
GenC5.menu.upload_method.jlinkMethod.upload.options=-a {upload.address} -s {upload.start}
2193+
GenC5.menu.upload_method.jlinkMethod.upload.tool=stm32CubeProg
2194+
2195+
GenC5.menu.upload_method.serialMethod=STM32CubeProgrammer (Serial)
2196+
GenC5.menu.upload_method.serialMethod.upload.protocol=serial
2197+
GenC5.menu.upload_method.serialMethod.upload.options=-c {serial.port.file} -a {upload.address} -s {upload.start} --parity {upload.parity}
2198+
GenC5.menu.upload_method.serialMethod.upload.tool=stm32CubeProg
2199+
2200+
GenC5.menu.upload_method.dfuMethod=STM32CubeProgrammer (DFU)
2201+
GenC5.menu.upload_method.dfuMethod.upload.protocol=dfu
2202+
GenC5.menu.upload_method.dfuMethod.upload.options=-v {upload.vid} -p {upload.pid} -a {upload.address} -s {upload.start}
2203+
GenC5.menu.upload_method.dfuMethod.upload.tool=stm32CubeProg
2204+
2205+
GenC5.menu.upload_method.bmpMethod=BMP (Black Magic Probe)
2206+
GenC5.menu.upload_method.bmpMethod.upload.protocol=gdb_bmp
2207+
GenC5.menu.upload_method.bmpMethod.upload.tool=bmp_upload
2208+
2209+
GenC5.menu.upload_method.OpenOCDSTLink=OpenOCD STLink (SWD)
2210+
GenC5.menu.upload_method.OpenOCDSTLink.upload.protocol=stlink
2211+
GenC5.menu.upload_method.OpenOCDSTLink.upload.tool=openocd_upload
2212+
2213+
GenC5.menu.upload_method.OpenOCDDapLink=OpenOCD DapLink (SWD)
2214+
GenC5.menu.upload_method.OpenOCDDapLink.upload.protocol=cmsis-dap
2215+
GenC5.menu.upload_method.OpenOCDDapLink.upload.tool=openocd_upload
2216+
GenC5.menu.upload_method.OpenOCDDapLink.debug.server.openocd.scripts.0=interface/cmsis-dap.cfg
2217+
GenC5.menu.upload_method.OpenOCDDapLink.debug.server.openocd.scripts.1={runtime.platform.path}/debugger/select_swd.cfg
2218+
21372219
###############################
21382220
# Generic F0
21392221
GenF0.name=Generic STM32F0 series
@@ -15276,6 +15358,12 @@ GenC0.menu.xserial.none.build.xSerial=-DHAL_UART_MODULE_ENABLED -DHWSERIAL_NONE
1527615358
GenC0.menu.xserial.disabled=Disabled (no Serial support)
1527715359
GenC0.menu.xserial.disabled.build.xSerial=
1527815360

15361+
GenC5.menu.xserial.generic=Enabled (generic 'Serial')
15362+
GenC5.menu.xserial.none=Enabled (no generic 'Serial')
15363+
GenC5.menu.xserial.none.build.xSerial=-DHAL_UART_MODULE_ENABLED -DHWSERIAL_NONE
15364+
GenC5.menu.xserial.disabled=Disabled (no Serial support)
15365+
GenC5.menu.xserial.disabled.build.xSerial=
15366+
1527915367
GenF0.menu.xserial.generic=Enabled (generic 'Serial')
1528015368
GenF0.menu.xserial.none=Enabled (no generic 'Serial')
1528115369
GenF0.menu.xserial.none.build.xSerial=-DHAL_UART_MODULE_ENABLED -DHWSERIAL_NONE
@@ -15553,6 +15641,14 @@ GenC0.menu.usb.CDC.build.enable_usb={build.usb_flags} -DUSBD_USE_CDC -DDISABLE_G
1555315641
GenC0.menu.usb.HID=HID (keyboard and mouse)
1555415642
GenC0.menu.usb.HID.build.enable_usb={build.usb_flags} -DUSBD_USE_HID_COMPOSITE
1555515643

15644+
GenC5.menu.usb.none=None
15645+
GenC5.menu.usb.CDCgen=CDC (generic 'Serial' supersede U(S)ART)
15646+
GenC5.menu.usb.CDCgen.build.enable_usb={build.usb_flags} -DUSBD_USE_CDC
15647+
GenC5.menu.usb.CDC=CDC (no generic 'Serial')
15648+
GenC5.menu.usb.CDC.build.enable_usb={build.usb_flags} -DUSBD_USE_CDC -DDISABLE_GENERIC_SERIALUSB
15649+
GenC5.menu.usb.HID=HID (keyboard and mouse)
15650+
GenC5.menu.usb.HID.build.enable_usb={build.usb_flags} -DUSBD_USE_HID_COMPOSITE
15651+
1555615652
GenF0.menu.usb.none=None
1555715653
GenF0.menu.usb.CDCgen=CDC (generic 'Serial' supersede U(S)ART)
1555815654
GenF0.menu.usb.CDCgen.build.enable_usb={build.usb_flags} -DUSBD_USE_CDC
@@ -15991,6 +16087,24 @@ GenC0.menu.opt.o3lto.build.flags.optimize=-O3 -flto
1599116087
GenC0.menu.opt.ogstd=Debug (-Og)
1599216088
GenC0.menu.opt.ogstd.build.flags.optimize=-Og
1599316089

16090+
GenC5.menu.opt.osstd=Smallest (-Os default)
16091+
GenC5.menu.opt.oslto=Smallest (-Os) with LTO
16092+
GenC5.menu.opt.oslto.build.flags.optimize=-Os -flto
16093+
GenC5.menu.opt.o1std=Fast (-O1)
16094+
GenC5.menu.opt.o1std.build.flags.optimize=-O1
16095+
GenC5.menu.opt.o1lto=Fast (-O1) with LTO
16096+
GenC5.menu.opt.o1lto.build.flags.optimize=-O1 -flto
16097+
GenC5.menu.opt.o2std=Faster (-O2)
16098+
GenC5.menu.opt.o2std.build.flags.optimize=-O2
16099+
GenC5.menu.opt.o2lto=Faster (-O2) with LTO
16100+
GenC5.menu.opt.o2lto.build.flags.optimize=-O2 -flto
16101+
GenC5.menu.opt.o3std=Fastest (-O3)
16102+
GenC5.menu.opt.o3std.build.flags.optimize=-O3
16103+
GenC5.menu.opt.o3lto=Fastest (-O3) with LTO
16104+
GenC5.menu.opt.o3lto.build.flags.optimize=-O3 -flto
16105+
GenC5.menu.opt.ogstd=Debug (-Og)
16106+
GenC5.menu.opt.ogstd.build.flags.optimize=-Og
16107+
1599416108
GenF0.menu.opt.osstd=Smallest (-Os default)
1599516109
GenF0.menu.opt.oslto=Smallest (-Os) with LTO
1599616110
GenF0.menu.opt.oslto.build.flags.optimize=-Os -flto
@@ -16728,6 +16842,10 @@ GenC0.menu.dbg.none=None
1672816842
GenC0.menu.dbg.enable=Symbols Enabled (-g)
1672916843
GenC0.menu.dbg.enable.build.flags.debug=-g
1673016844

16845+
GenC5.menu.dbg.none=None
16846+
GenC5.menu.dbg.enable=Symbols Enabled (-g)
16847+
GenC5.menu.dbg.enable.build.flags.debug=-g
16848+
1673116849
GenF0.menu.dbg.none=None
1673216850
GenF0.menu.dbg.enable_sym=Symbols Enabled (-g)
1673316851
GenF0.menu.dbg.enable_sym.build.flags.debug=-g -DNDEBUG
@@ -17071,6 +17189,16 @@ GenC0.menu.rtlib.nanofps.build.flags.ldspecs=--specs=nano.specs -u _printf_float
1707117189
GenC0.menu.rtlib.full=Newlib Standard
1707217190
GenC0.menu.rtlib.full.build.flags.ldspecs=
1707317191

17192+
GenC5.menu.rtlib.nano=Newlib Nano (default)
17193+
GenC5.menu.rtlib.nanofp=Newlib Nano + Float Printf
17194+
GenC5.menu.rtlib.nanofp.build.flags.ldspecs=--specs=nano.specs -u _printf_float
17195+
GenC5.menu.rtlib.nanofs=Newlib Nano + Float Scanf
17196+
GenC5.menu.rtlib.nanofs.build.flags.ldspecs=--specs=nano.specs -u _scanf_float
17197+
GenC5.menu.rtlib.nanofps=Newlib Nano + Float Printf/Scanf
17198+
GenC5.menu.rtlib.nanofps.build.flags.ldspecs=--specs=nano.specs -u _printf_float -u _scanf_float
17199+
GenC5.menu.rtlib.full=Newlib Standard
17200+
GenC5.menu.rtlib.full.build.flags.ldspecs=
17201+
1707417202
GenF0.menu.rtlib.nano=Newlib Nano (default)
1707517203
GenF0.menu.rtlib.nanofp=Newlib Nano + Float Printf
1707617204
GenF0.menu.rtlib.nanofp.build.flags.ldspecs=--specs=nano.specs -u _printf_float

‎variants/STM32C5xx/C552R(C-E)T_C562RET/generic_clock.c‎

Lines changed: 83 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,9 @@
1313
#if defined(ARDUINO_GENERIC_C552RCTX) || defined(ARDUINO_GENERIC_C552RETX) ||\
1414
defined(ARDUINO_GENERIC_C562RETX)
1515
#include "pins_arduino.h"
16+
// #include "stm32yyxx_ll_flash.h"
17+
// #include "stm32yyxx_ll_utils.h"
18+
// #include "stm32yyxx_ll_rcc.h"
1619

1720
/**
1821
* @brief System Clock Configuration
@@ -21,8 +24,86 @@
2124
*/
2225
WEAK void SystemClock_Config(void)
2326
{
24-
/* SystemClock_Config can be generated by STM32CubeMX */
25-
#warning "SystemClock_Config() is empty. Default clock at reset is used."
27+
if (HAL_RCC_HSIS_Enable() != HAL_OK) {
28+
Error_Handler();
29+
}
30+
31+
hal_rcc_psi_config_t config_psi;
32+
config_psi.psi_source = HAL_RCC_PSI_SRC_HSI_8MHz;
33+
config_psi.psi_ref = HAL_RCC_PSI_REF_8MHZ;
34+
config_psi.psi_out = HAL_RCC_PSI_OUT_144MHZ;
35+
if (HAL_RCC_PSI_SetConfig(&config_psi) != HAL_OK) {
36+
Error_Handler();
37+
}
38+
39+
if (HAL_RCC_PSIS_Enable() != HAL_OK) {
40+
Error_Handler();
41+
}
42+
43+
/** Initializes the CPU, AHB and APB busses clocks */
44+
hal_rcc_bus_clk_config_t config_bus;
45+
config_bus.hclk_prescaler = HAL_RCC_HCLK_PRESCALER1;
46+
config_bus.pclk1_prescaler = HAL_RCC_PCLK_PRESCALER1;
47+
config_bus.pclk2_prescaler = HAL_RCC_PCLK_PRESCALER1;
48+
config_bus.pclk3_prescaler = HAL_RCC_PCLK_PRESCALER1;
49+
if (HAL_RCC_SetBusClockConfig(&config_bus) != HAL_OK) {
50+
Error_Handler();
51+
}
52+
53+
/** Frequency will be increased */
54+
HAL_FLASH_ITF_SetLatency(HAL_FLASH, HAL_FLASH_ITF_LATENCY_4);
55+
56+
if (HAL_RCC_SetSYSCLKSource(HAL_RCC_SYSCLK_SRC_PSIS) != HAL_OK) {
57+
Error_Handler();
58+
}
59+
60+
HAL_FLASH_ITF_SetProgrammingDelay(HAL_FLASH, HAL_FLASH_ITF_PROGRAM_DELAY_2);
61+
62+
if (HAL_UpdateCoreClock() != HAL_OK) {
63+
Error_Handler();
64+
}
65+
// LL_RCC_HSIS_Enable();
66+
// while(LL_RCC_HSIS_IsReady() != 1U)
67+
// {
68+
// }
69+
70+
// LL_RCC_ConfigPSI(LL_RCC_PSIFREQ_144MHZ, LL_RCC_PSIREF_8MHZ, LL_RCC_PSISOURCE_HSIDIV18);
71+
72+
// LL_RCC_PSIS_Enable();
73+
// while(LL_RCC_PSIS_IsReady() != 1U)
74+
// {
75+
// }
76+
77+
// /** Initializes the CPU, AHB and APB busses clocks */
78+
// LL_RCC_ConfigBusClock(LL_RCC_HCLK_PRESCALER_1 | LL_RCC_APB1_PRESCALER_1 |
79+
// LL_RCC_APB2_PRESCALER_1 | LL_RCC_APB3_PRESCALER_1);
80+
81+
// /** Frequency will be increased */
82+
// LL_FLASH_SetLatency(FLASH, LL_FLASH_LATENCY_4WS);
83+
84+
// LL_RCC_SetSysClkSource(LL_RCC_SYS_CLKSOURCE_PSIS);
85+
// /* Wait till System clock is ready */
86+
// while(LL_RCC_GetSysClkSource() != LL_RCC_SYS_CLKSOURCE_STATUS_PSIS)
87+
// {
88+
// }
89+
90+
// LL_FLASH_SetProgrammingDelay(FLASH, LL_FLASH_PROGRAM_DELAY_2);
91+
92+
// LL_SetSystemCoreClock(144000000U);
93+
// LL_Init1msTick(SystemCoreClock);
94+
95+
// /* Peripheral clocks */
96+
// LL_RCC_HSIK_SetDivider(LL_RCC_HSIK_DIV_8);
97+
// LL_RCC_HSIK_Enable();
98+
// while(LL_RCC_HSIK_IsReady() != 1U)
99+
// {
100+
// }
101+
102+
// if (HAL_RCC_LPUART1_SetKernelClkSource(HAL_RCC_LPUART1_CLK_SRC_HSIK) != HAL_OK)
103+
// {
104+
// Error_Handler();
105+
// }
106+
26107
}
27108

28109
#endif /* ARDUINO_GENERIC_* */

0 commit comments

Comments
 (0)