Skip to content

Commit cafa340

Browse files
committed
variant(wl3): add generic STM32WL33Cx
Signed-off-by: Frederic Pillon <frederic.pillon@st.com>
1 parent a240021 commit cafa340

File tree

4 files changed

+354
-2
lines changed

4 files changed

+354
-2
lines changed

README.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@ User can add a STM32 based board following this [wiki](https://github.com/stm32d
7878
- [Generic STM32WB boards](#generic-stm32wb-boards)
7979
- [Generic STM32WB0 boards](#generic-stm32wb0-boards)
8080
- [Generic STM32WBA boards](#generic-stm32wba-boards)
81+
- [Generic STM32WL3 boards](#generic-stm32wl3-boards)
8182
- [Generic STM32WL boards](#generic-stm32wl-boards)
8283
- [3D printer boards](#3d-printer-boards)
8384
- [Blues boards](#blues-boards)
@@ -822,6 +823,13 @@ User can add a STM32 based board following this [wiki](https://github.com/stm32d
822823
| :----: | :-------: | ---- | :-----: | :---- |
823824
| :green_heart: | STM32WBA55CEU<br>STM32WBA55CGU | Generic Board | *2.8.0* | |
824825

826+
### Generic STM32WL3 boards
827+
828+
| Status | Device(s) | Name | Release | Notes |
829+
| :----: | :-------: | ---- | :-----: | :---- |
830+
| :yellow_heart: | STM32WL3C8V<br>STM32WL3CBV<br>STM32WL3CCV | Generic Board | **2.12.0** | |
831+
| :yellow_heart: | STM32WL3C8VX<br>STM32WL3CBVX<br>STM32WL3CCVX | Generic Board | **2.12.0** | |
832+
825833
### Generic STM32WL boards
826834

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

boards.txt

Lines changed: 131 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13462,6 +13462,93 @@ GenWBA.menu.upload_method.OpenOCDDapLink=OpenOCD DapLink (SWD)
1346213462
GenWBA.menu.upload_method.OpenOCDDapLink.upload.protocol=cmsis-dap
1346313463
GenWBA.menu.upload_method.OpenOCDDapLink.upload.tool=openocd_upload
1346413464

13465+
################################################################################
13466+
# Generic WL3
13467+
GenWL3.name=Generic STM32WL3 series
13468+
13469+
GenWL3.build.core=arduino
13470+
GenWL3.build.board=GenWL3
13471+
GenWL3.build.st_extra_flags=-D{build.product_line} {build.xSerial} -D__CORTEX_SC=0
13472+
GenWL3.build.mcu=cortex-m0plus
13473+
GenWL3.build.series=STM32WL3x
13474+
GenWL3.build.flash_offset=0x0
13475+
GenWL3.upload.maximum_size=0
13476+
GenWL3.upload.maximum_data_size=0
13477+
GenWL3.openocd.target=stm32wl3x
13478+
GenWL3.upload.address=0x10040000
13479+
GenWL3.upload.mode=hwRstPulse
13480+
GenWL3.upload.start=0x10000000
13481+
13482+
# Generic WL33C8Vx
13483+
GenWL3.menu.pnum.GENERIC_WL33C8VX=Generic WL33C8Vx
13484+
GenWL3.menu.pnum.GENERIC_WL33C8VX.upload.maximum_size=65536
13485+
GenWL3.menu.pnum.GENERIC_WL33C8VX.upload.maximum_data_size=16384
13486+
GenWL3.menu.pnum.GENERIC_WL33C8VX.build.board=GENERIC_WL33C8VX
13487+
GenWL3.menu.pnum.GENERIC_WL33C8VX.build.product_line=STM32WL3xx
13488+
GenWL3.menu.pnum.GENERIC_WL33C8VX.build.variant=STM32WL3x/WL33C(8-B-C)Vx(X)
13489+
GenWL3.menu.pnum.GENERIC_WL33C8VX.debug.svd_file={runtime.tools.STM32_SVD.path}/svd/STM32WL3x/STM32WL33.svd
13490+
13491+
# Generic WL33C8VxX
13492+
GenWL3.menu.pnum.GENERIC_WL33C8VXX=Generic WL33C8VxX
13493+
GenWL3.menu.pnum.GENERIC_WL33C8VXX.upload.maximum_size=65536
13494+
GenWL3.menu.pnum.GENERIC_WL33C8VXX.upload.maximum_data_size=16384
13495+
GenWL3.menu.pnum.GENERIC_WL33C8VXX.build.board=GENERIC_WL33C8VXX
13496+
GenWL3.menu.pnum.GENERIC_WL33C8VXX.build.product_line=STM32WL3xx
13497+
GenWL3.menu.pnum.GENERIC_WL33C8VXX.build.variant=STM32WL3x/WL33C(8-B-C)Vx(X)
13498+
GenWL3.menu.pnum.GENERIC_WL33C8VXX.debug.svd_file={runtime.tools.STM32_SVD.path}/svd/STM32WL3x/STM32WL33.svd
13499+
13500+
# Generic WL33CBVx
13501+
GenWL3.menu.pnum.GENERIC_WL33CBVX=Generic WL33CBVx
13502+
GenWL3.menu.pnum.GENERIC_WL33CBVX.upload.maximum_size=131072
13503+
GenWL3.menu.pnum.GENERIC_WL33CBVX.upload.maximum_data_size=32768
13504+
GenWL3.menu.pnum.GENERIC_WL33CBVX.build.board=GENERIC_WL33CBVX
13505+
GenWL3.menu.pnum.GENERIC_WL33CBVX.build.product_line=STM32WL3xx
13506+
GenWL3.menu.pnum.GENERIC_WL33CBVX.build.variant=STM32WL3x/WL33C(8-B-C)Vx(X)
13507+
GenWL3.menu.pnum.GENERIC_WL33CBVX.debug.svd_file={runtime.tools.STM32_SVD.path}/svd/STM32WL3x/STM32WL33.svd
13508+
13509+
# Generic WL33CBVxX
13510+
GenWL3.menu.pnum.GENERIC_WL33CBVXX=Generic WL33CBVxX
13511+
GenWL3.menu.pnum.GENERIC_WL33CBVXX.upload.maximum_size=131072
13512+
GenWL3.menu.pnum.GENERIC_WL33CBVXX.upload.maximum_data_size=32768
13513+
GenWL3.menu.pnum.GENERIC_WL33CBVXX.build.board=GENERIC_WL33CBVXX
13514+
GenWL3.menu.pnum.GENERIC_WL33CBVXX.build.product_line=STM32WL3xx
13515+
GenWL3.menu.pnum.GENERIC_WL33CBVXX.build.variant=STM32WL3x/WL33C(8-B-C)Vx(X)
13516+
GenWL3.menu.pnum.GENERIC_WL33CBVXX.debug.svd_file={runtime.tools.STM32_SVD.path}/svd/STM32WL3x/STM32WL33.svd
13517+
13518+
# Generic WL33CCVx
13519+
GenWL3.menu.pnum.GENERIC_WL33CCVX=Generic WL33CCVx
13520+
GenWL3.menu.pnum.GENERIC_WL33CCVX.upload.maximum_size=262144
13521+
GenWL3.menu.pnum.GENERIC_WL33CCVX.upload.maximum_data_size=32768
13522+
GenWL3.menu.pnum.GENERIC_WL33CCVX.build.board=GENERIC_WL33CCVX
13523+
GenWL3.menu.pnum.GENERIC_WL33CCVX.build.product_line=STM32WL3xx
13524+
GenWL3.menu.pnum.GENERIC_WL33CCVX.build.variant=STM32WL3x/WL33C(8-B-C)Vx(X)
13525+
GenWL3.menu.pnum.GENERIC_WL33CCVX.debug.svd_file={runtime.tools.STM32_SVD.path}/svd/STM32WL3x/STM32WL33.svd
13526+
13527+
# Generic WL33CCVxX
13528+
GenWL3.menu.pnum.GENERIC_WL33CCVXX=Generic WL33CCVxX
13529+
GenWL3.menu.pnum.GENERIC_WL33CCVXX.upload.maximum_size=262144
13530+
GenWL3.menu.pnum.GENERIC_WL33CCVXX.upload.maximum_data_size=32768
13531+
GenWL3.menu.pnum.GENERIC_WL33CCVXX.build.board=GENERIC_WL33CCVXX
13532+
GenWL3.menu.pnum.GENERIC_WL33CCVXX.build.product_line=STM32WL3xx
13533+
GenWL3.menu.pnum.GENERIC_WL33CCVXX.build.variant=STM32WL3x/WL33C(8-B-C)Vx(X)
13534+
GenWL3.menu.pnum.GENERIC_WL33CCVXX.debug.svd_file={runtime.tools.STM32_SVD.path}/svd/STM32WL3x/STM32WL33.svd
13535+
13536+
# Upload menu
13537+
GenWL3.menu.upload_method.swdMethod=STM32CubeProgrammer (SWD)
13538+
GenWL3.menu.upload_method.swdMethod.upload.protocol=swd
13539+
GenWL3.menu.upload_method.swdMethod.upload.options=-a {upload.address} -m {upload.mode} -s {upload.start}
13540+
GenWL3.menu.upload_method.swdMethod.upload.tool=stm32CubeProg
13541+
13542+
GenWL3.menu.upload_method.jlinkMethod=STM32CubeProgrammer (J-Link)
13543+
GenWL3.menu.upload_method.jlinkMethod.upload.protocol=jlink
13544+
GenWL3.menu.upload_method.jlinkMethod.upload.options=
13545+
GenWL3.menu.upload_method.jlinkMethod.upload.tool=stm32CubeProg
13546+
13547+
GenWL3.menu.upload_method.serialMethod=STM32CubeProgrammer (Serial)
13548+
GenWL3.menu.upload_method.serialMethod.upload.protocol=serial
13549+
GenWL3.menu.upload_method.serialMethod.upload.options=-c {serial.port.file}
13550+
GenWL3.menu.upload_method.serialMethod.upload.tool=stm32CubeProg
13551+
1346513552
################################################################################
1346613553
# Generic WL
1346713554
GenWL.name=Generic STM32WL series
@@ -14983,6 +15070,12 @@ GenWBA.menu.xserial.none.build.xSerial=-DHAL_UART_MODULE_ENABLED -DHWSERIAL_NONE
1498315070
GenWBA.menu.xserial.disabled=Disabled (no Serial support)
1498415071
GenWBA.menu.xserial.disabled.build.xSerial=
1498515072

15073+
GenWL3.menu.xserial.generic=Enabled (generic 'Serial')
15074+
GenWL3.menu.xserial.none=Enabled (no generic 'Serial')
15075+
GenWL3.menu.xserial.none.build.xSerial=-DHAL_UART_MODULE_ENABLED -DHWSERIAL_NONE
15076+
GenWL3.menu.xserial.disabled=Disabled (no Serial support)
15077+
GenWL3.menu.xserial.disabled.build.xSerial=
15078+
1498615079
GenWL.menu.xserial.generic=Enabled (generic 'Serial')
1498715080
GenWL.menu.xserial.none=Enabled (no generic 'Serial')
1498815081
GenWL.menu.xserial.none.build.xSerial=-DHAL_UART_MODULE_ENABLED -DHWSERIAL_NONE
@@ -15977,6 +16070,26 @@ GenWBA.menu.opt.ogstd.build.flags.optimize=-Og
1597716070
GenWBA.menu.opt.o0std=No Optimization (-O0)
1597816071
GenWBA.menu.opt.o0std.build.flags.optimize=-O0
1597916072

16073+
GenWL3.menu.opt.osstd=Smallest (-Os default)
16074+
GenWL3.menu.opt.oslto=Smallest (-Os) with LTO
16075+
GenWL3.menu.opt.oslto.build.flags.optimize=-Os -flto
16076+
GenWL3.menu.opt.o1std=Fast (-O1)
16077+
GenWL3.menu.opt.o1std.build.flags.optimize=-O1
16078+
GenWL3.menu.opt.o1lto=Fast (-O1) with LTO
16079+
GenWL3.menu.opt.o1lto.build.flags.optimize=-O1 -flto
16080+
GenWL3.menu.opt.o2std=Faster (-O2)
16081+
GenWL3.menu.opt.o2std.build.flags.optimize=-O2
16082+
GenWL3.menu.opt.o2lto=Faster (-O2) with LTO
16083+
GenWL3.menu.opt.o2lto.build.flags.optimize=-O2 -flto
16084+
GenWL3.menu.opt.o3std=Fastest (-O3)
16085+
GenWL3.menu.opt.o3std.build.flags.optimize=-O3
16086+
GenWL3.menu.opt.o3lto=Fastest (-O3) with LTO
16087+
GenWL3.menu.opt.o3lto.build.flags.optimize=-O3 -flto
16088+
GenWL3.menu.opt.ogstd=Debug (-Og)
16089+
GenWL3.menu.opt.ogstd.build.flags.optimize=-Og
16090+
GenWL3.menu.opt.o0std=No Optimization (-O0)
16091+
GenWL3.menu.opt.o0std.build.flags.optimize=-O0
16092+
1598016093
GenWL.menu.opt.osstd=Smallest (-Os default)
1598116094
GenWL.menu.opt.oslto=Smallest (-Os) with LTO
1598216095
GenWL.menu.opt.oslto.build.flags.optimize=-Os -flto
@@ -16450,6 +16563,14 @@ GenWBA.menu.dbg.enable_log.build.flags.debug=
1645016563
GenWBA.menu.dbg.enable_all=Core Logs and Symbols Enabled (-g)
1645116564
GenWBA.menu.dbg.enable_all.build.flags.debug=-g
1645216565

16566+
GenWL3.menu.dbg.none=None
16567+
GenWL3.menu.dbg.enable_sym=Symbols Enabled (-g)
16568+
GenWL3.menu.dbg.enable_sym.build.flags.debug=-g -DNDEBUG
16569+
GenWL3.menu.dbg.enable_log=Core logs Enabled
16570+
GenWL3.menu.dbg.enable_log.build.flags.debug=
16571+
GenWL3.menu.dbg.enable_all=Core Logs and Symbols Enabled (-g)
16572+
GenWL3.menu.dbg.enable_all.build.flags.debug=-g
16573+
1645316574
GenWL.menu.dbg.none=None
1645416575
GenWL.menu.dbg.enable_sym=Symbols Enabled (-g)
1645516576
GenWL.menu.dbg.enable_sym.build.flags.debug=-g -DNDEBUG
@@ -16825,6 +16946,16 @@ GenWBA.menu.rtlib.nanofps.build.flags.ldspecs=--specs=nano.specs -u _printf_floa
1682516946
GenWBA.menu.rtlib.full=Newlib Standard
1682616947
GenWBA.menu.rtlib.full.build.flags.ldspecs=
1682716948

16949+
GenWL3.menu.rtlib.nano=Newlib Nano (default)
16950+
GenWL3.menu.rtlib.nanofp=Newlib Nano + Float Printf
16951+
GenWL3.menu.rtlib.nanofp.build.flags.ldspecs=--specs=nano.specs -u _printf_float
16952+
GenWL3.menu.rtlib.nanofs=Newlib Nano + Float Scanf
16953+
GenWL3.menu.rtlib.nanofs.build.flags.ldspecs=--specs=nano.specs -u _scanf_float
16954+
GenWL3.menu.rtlib.nanofps=Newlib Nano + Float Printf/Scanf
16955+
GenWL3.menu.rtlib.nanofps.build.flags.ldspecs=--specs=nano.specs -u _printf_float -u _scanf_float
16956+
GenWL3.menu.rtlib.full=Newlib Standard
16957+
GenWL3.menu.rtlib.full.build.flags.ldspecs=
16958+
1682816959
GenWL.menu.rtlib.nano=Newlib Nano (default)
1682916960
GenWL.menu.rtlib.nanofp=Newlib Nano + Float Printf
1683016961
GenWL.menu.rtlib.nanofp.build.flags.ldspecs=--specs=nano.specs -u _printf_float

variants/STM32WL3x/WL33C(8-B-C)Vx(X)/generic_clock.c

Lines changed: 29 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,35 @@
2222
*/
2323
WEAK void SystemClock_Config(void)
2424
{
25-
/* SystemClock_Config can be generated by STM32CubeMX */
26-
#warning "SystemClock_Config() is empty. Default clock at reset is used."
25+
RCC_OscInitTypeDef RCC_OscInitStruct = {};
26+
RCC_ClkInitTypeDef RCC_ClkInitStruct = {};
27+
RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = {};
28+
29+
/** Initializes the RCC Oscillators according to the specified parameters
30+
* in the RCC_OscInitTypeDef structure.
31+
*/
32+
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
33+
if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) {
34+
Error_Handler();
35+
}
36+
37+
/** Configure the SYSCLKSource and SYSCLKDivider
38+
*/
39+
RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI;
40+
RCC_ClkInitStruct.SYSCLKDivider = RCC_RC64MPLL_DIV1;
41+
42+
if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_WAIT_STATES_1) != HAL_OK) {
43+
Error_Handler();
44+
}
45+
/** Initializes the peripherals clock
46+
*/
47+
PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_SMPS;
48+
PeriphClkInitStruct.SmpsDivSelection = RCC_SMPSCLK_DIV2;
49+
PeriphClkInitStruct.KRMRateMultiplier = 2;
50+
51+
if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK) {
52+
Error_Handler();
53+
}
2754
}
2855

2956
#endif /* ARDUINO_GENERIC_* */

0 commit comments

Comments
 (0)