Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 22433c6

Browse files
Julien Staubatsju
authored andcommitted
Add support for WB family
1 parent 26593ee commit 22433c6

File tree

7 files changed

+134
-17
lines changed

7 files changed

+134
-17
lines changed

cmake/FindBSP.cmake

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
# For information about why and how of this file: https://cmake.org/cmake/help/latest/command/find_package.html
2+
13
set(BSP_F0_BOARDS
24
STM32F0xx_Nucleo_32 STM32F0xx-Nucleo STM32F072B-Discovery
35
STM32F0308-Discovery STM32072B_EVAL STM32091C_EVAL
@@ -244,7 +246,7 @@ foreach(COMP ${BSP_FIND_COMPONENTS})
244246
string(TOLOWER ${COMP} COMP_L)
245247
string(TOUPPER ${COMP} COMP_U)
246248

247-
string(REGEX MATCH "^STM32([A-Z][0-9])([0-9A-Z][0-9][A-Z][0-9A-Z])?_?(M[47])?.*$" COMP_U ${COMP_U})
249+
string(REGEX MATCH "^STM32([FGHLW][0-9BL])([0-9A-Z][0-9M][A-Z][0-9A-Z])?_?(M[47])?.*$" COMP_U ${COMP_U})
248250
if(NOT CMAKE_MATCH_1)
249251
message(FATAL_ERROR "Unknown BSP component: ${COMP}")
250252
endif()

cmake/FindCMSIS.cmake

Lines changed: 32 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
# For information about why and how of this file: https://cmake.org/cmake/help/latest/command/find_package.html
2+
13
if(NOT CMSIS_FIND_COMPONENTS)
24
set(CMSIS_FIND_COMPONENTS ${STM32_SUPPORTED_FAMILIES_LONG_NAME})
35
endif()
@@ -45,56 +47,69 @@ foreach(COMP ${CMSIS_FIND_COMPONENTS})
4547
string(TOLOWER ${COMP} COMP_L)
4648
string(TOUPPER ${COMP} COMP)
4749

48-
string(REGEX MATCH "^STM32([A-Z][0-9])([0-9A-Z][0-9][A-Z][0-9A-Z])?_?(M[47])?.*$" COMP ${COMP})
49-
50+
string(REGEX MATCH "^STM32([FGHLW][0-9BL])([0-9A-Z][0-9M][A-Z][0-9A-Z])?_?(M[47])?.*$" COMP ${COMP})
51+
# CMAKE_MATCH_<n> contains n'th subexpression
52+
# CMAKE_MATCH_0 contains full match
53+
5054
if((NOT CMAKE_MATCH_1) AND (NOT CMAKE_MATCH_2))
5155
message(FATAL_ERROR "Unknown CMSIS component: ${COMP}")
5256
endif()
5357

5458
if(CMAKE_MATCH_2)
5559
set(FAMILY ${CMAKE_MATCH_1})
5660
set(DEVICES "${CMAKE_MATCH_1}${CMAKE_MATCH_2}")
61+
message(TRACE "FindCMSIS: full device name match for COMP ${COMP}, DEVICES is ${DEVICES}")
5762
else()
5863
set(FAMILY ${CMAKE_MATCH_1})
59-
stm32_get_devices_by_family(DEVICES FAMILY ${FAMILY} CORE ${CORE})
64+
stm32_get_devices_by_family(DEVICES FAMILY ${FAMILY})
65+
message(TRACE "FindCMSIS: family only match for COMP ${COMP}, DEVICES is ${DEVICES}")
6066
endif()
6167

6268
if(CMAKE_MATCH_3)
6369
set(CORE ${CMAKE_MATCH_3})
6470
set(CORE_C "::${CORE}")
6571
set(CORE_U "_${CORE}")
72+
set(CORE_Ucm "_c${CORE}")
73+
string(TOLOWER ${CORE_Ucm} CORE_Ucm)
74+
message(TRACE "FindCMSIS: core match in component name for COMP ${COMP}. CORE is ${CORE}")
6675
else()
6776
unset(CORE)
6877
unset(CORE_C)
6978
unset(CORE_U)
79+
unset(CORE_Ucm)
7080
endif()
7181

7282
string(TOLOWER ${FAMILY} FAMILY_L)
7383

7484
if((NOT STM32_CMSIS_${FAMILY}_PATH) AND (NOT STM32_CUBE_${FAMILY}_PATH))
85+
# try to set path from environment variable. Note it could be ...-NOT-FOUND and it's fine
7586
set(STM32_CUBE_${FAMILY}_PATH $ENV{STM32_CUBE_${FAMILY}_PATH} CACHE PATH "Path to STM32Cube${FAMILY}")
7687
endif()
7788

7889
if((NOT STM32_CMSIS_${FAMILY}_PATH) AND (NOT STM32_CUBE_${FAMILY}_PATH))
7990
set(STM32_CUBE_${FAMILY}_PATH /opt/STM32Cube${FAMILY} CACHE PATH "Path to STM32Cube${FAMILY}")
8091
message(STATUS "Neither STM32_CUBE_${FAMILY}_PATH nor STM32_CMSIS_${FAMILY}_PATH specified using default STM32_CUBE_${FAMILY}_PATH: ${STM32_CUBE_${FAMILY}_PATH}")
8192
endif()
82-
93+
94+
# search for Include/cmsis_gcc.h
8395
find_path(CMSIS_${FAMILY}${CORE_U}_CORE_PATH
8496
NAMES Include/cmsis_gcc.h
8597
PATHS "${STM32_CMSIS_PATH}" "${STM32_CUBE_${FAMILY}_PATH}/Drivers/CMSIS"
8698
NO_DEFAULT_PATH
8799
)
88100
if (NOT CMSIS_${FAMILY}${CORE_U}_CORE_PATH)
101+
message(VERBOSE "TODO meaning full message 1")
89102
continue()
90103
endif()
91104

105+
# search for Include/stm32[XX]xx.h
92106
find_path(CMSIS_${FAMILY}${CORE_U}_PATH
93107
NAMES Include/stm32${FAMILY_L}xx.h
94108
PATHS "${STM32_CMSIS_${FAMILY}_PATH}" "${STM32_CUBE_${FAMILY}_PATH}/Drivers/CMSIS/Device/ST/STM32${FAMILY}xx"
95109
NO_DEFAULT_PATH
96110
)
97111
if (NOT CMSIS_${FAMILY}${CORE_U}_PATH)
112+
message(VERBOSE "TODO meaning full message 2")
98113
continue()
99114
endif()
100115
list(APPEND CMSIS_INCLUDE_DIRS "${CMSIS_${FAMILY}${CORE_U}_CORE_PATH}/Include" "${CMSIS_${FAMILY}${CORE_U}_PATH}/Include")
@@ -117,19 +132,22 @@ foreach(COMP ${CMSIS_FIND_COMPONENTS})
117132

118133
set(CMSIS_${COMP}_VERSION ${CMSIS_${FAMILY}${CORE_U}_VERSION})
119134
set(CMSIS_VERSION ${CMSIS_${COMP}_VERSION})
120-
135+
136+
# search for system_stm32[XX]xx.c
121137
find_file(CMSIS_${FAMILY}${CORE_U}_SOURCE
122138
NAMES system_stm32${FAMILY_L}xx.c
123139
PATHS "${CMSIS_${FAMILY}${CORE_U}_PATH}/Source/Templates"
124140
NO_DEFAULT_PATH
125141
)
126142
list(APPEND CMSIS_SOURCES "${CMSIS_${FAMILY}${CORE_U}_SOURCE}")
127143

128-
if (NOT CMSIS_${FAMILY}${CORE_U}_SOURCE)
144+
if(NOT CMSIS_${FAMILY}${CORE_U}_SOURCE)
145+
message(VERBOSE "TODO meaning full message 3")
129146
continue()
130147
endif()
131148

132149
if(NOT (TARGET CMSIS::STM32::${FAMILY}${CORE_C}))
150+
message(TRACE "FindCMSIS: creating library CMSIS::STM32::${FAMILY}${CORE_C}")
133151
add_library(CMSIS::STM32::${FAMILY}${CORE_C} INTERFACE IMPORTED)
134152
target_link_libraries(CMSIS::STM32::${FAMILY}${CORE_C} INTERFACE STM32::${FAMILY}${CORE_C})
135153
target_include_directories(CMSIS::STM32::${FAMILY}${CORE_C} INTERFACE "${CMSIS_${FAMILY}${CORE_U}_CORE_PATH}/Include")
@@ -139,8 +157,11 @@ foreach(COMP ${CMSIS_FIND_COMPONENTS})
139157

140158
set(DEVICES_FOUND TRUE)
141159
foreach(DEVICE ${DEVICES})
160+
message(TRACE "FindCMSIS: Iterating DEVICE ${DEVICE}")
161+
142162
stm32_get_cores(DEV_CORES FAMILY ${FAMILY} DEVICE ${DEVICE})
143163
if(CORE AND (NOT ${CORE} IN_LIST DEV_CORES))
164+
message(TRACE "FindCMSIS: skip device because CORE ${CORE} provided doesn't correspond to FAMILY ${FAMILY} DEVICE ${DEVICE}")
144165
continue()
145166
endif()
146167

@@ -149,17 +170,19 @@ foreach(COMP ${CMSIS_FIND_COMPONENTS})
149170
string(TOLOWER ${TYPE} TYPE_L)
150171

151172
find_file(CMSIS_${FAMILY}${CORE_U}_${TYPE}_STARTUP
152-
NAMES startup_stm32${TYPE_L}.s
173+
NAMES startup_stm32${TYPE_L}.s startup_stm32${TYPE_L}${CORE_Ucm}.s
153174
PATHS "${CMSIS_${FAMILY}${CORE_U}_PATH}/Source/Templates/gcc"
154175
NO_DEFAULT_PATH
155176
)
156177
list(APPEND CMSIS_SOURCES "${CMSIS_${FAMILY}${CORE_U}_${TYPE}_STARTUP}")
157178
if(NOT CMSIS_${FAMILY}${CORE_U}_${TYPE}_STARTUP)
158179
set(DEVICES_FOUND FALSE)
180+
message(VERBOSE "FindCMSIS: did not find file: startup_stm32${TYPE_L}.s or startup_stm32${TYPE_L}${CORE_Ucm}.s")
159181
break()
160182
endif()
161183

162184
if(NOT (TARGET CMSIS::STM32::${TYPE}${CORE_C}))
185+
message(TRACE "FindCMSIS: creating library CMSIS::STM32::${TYPE}${CORE_C}")
163186
add_library(CMSIS::STM32::${TYPE}${CORE_C} INTERFACE IMPORTED)
164187
target_link_libraries(CMSIS::STM32::${TYPE}${CORE_C} INTERFACE CMSIS::STM32::${FAMILY}${CORE_C} STM32::${TYPE}${CORE_C})
165188
target_sources(CMSIS::STM32::${TYPE}${CORE_C} INTERFACE "${CMSIS_${FAMILY}${CORE_U}_${TYPE}_STARTUP}")
@@ -172,8 +195,10 @@ foreach(COMP ${CMSIS_FIND_COMPONENTS})
172195

173196
if(DEVICES_FOUND)
174197
set(CMSIS_${COMP}_FOUND TRUE)
198+
message(DEBUG "CMSIS_${COMP}_FOUND TRUE")
175199
else()
176200
set(CMSIS_${COMP}_FOUND FALSE)
201+
message(DEBUG "CMSIS_${COMP}_FOUND FALSE")
177202
endif()
178203
list(REMOVE_DUPLICATES CMSIS_INCLUDE_DIRS)
179204
list(REMOVE_DUPLICATES CMSIS_SOURCES)

cmake/FindFreeRTOS.cmake

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
# For information about why and how of this file: https://cmake.org/cmake/help/latest/command/find_package.html
2+
13
if(NOT FreeRTOS_FIND_COMPONENTS)
24
set(FreeRTOS_FIND_COMPONENTS
35
ARM_CM0 ARM_CM3 ARM_CM4F ARM_CM7

cmake/FindHAL.cmake

Lines changed: 34 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
# For information about why and how of this file: https://cmake.org/cmake/help/latest/command/find_package.html
2+
13
set(HAL_DRIVERS_F0
24
adc can cec comp cortex crc dac dma exti flash gpio i2c i2s irda iwdg pcd
35
pwr rcc rtc smartcard smbus spi tim tsc uart usart wwdg
@@ -171,6 +173,20 @@ set(HAL_LL_DRIVERS_L5
171173
rng rtc sdmmc spi tim ucpd usart usb utils
172174
)
173175

176+
set(HAL_DRIVERS_WB
177+
adc comp cortex crc cryp dma exti flash gpio hsem
178+
i2c ipcc irda iwdg lcd lptim pcd pka pwr qspi rcc
179+
rng rtc sai smartcard smbus spi sram tim tsc uart usart wwdg
180+
)
181+
set(HAL_EX_DRIVERS_WB
182+
adc crc cryp dma flash i2c pcd pwr rcc
183+
rtc sai smartcard spi tim uart usart
184+
)
185+
set(HAL_LL_DRIVERS_WB
186+
adc comp crc crs dma exti gpio i2c lptim lpuart pka pwr rcc
187+
rng rtc spi tim usart usb utils
188+
)
189+
174190
foreach(FAMILY_SUFFIX ${STM32_SUPPORTED_FAMILIES_SHORT_NAME})
175191
list(APPEND HAL_DRIVERS ${HAL_DRIVERS_${FAMILY_SUFFIX}})
176192
list(APPEND HAL_LL_DRIVERS ${HAL_LL_DRIVERS_${FAMILY_SUFFIX}})
@@ -182,21 +198,24 @@ foreach(COMP ${HAL_FIND_COMPONENTS})
182198
string(TOLOWER ${COMP} COMP_L)
183199
string(TOUPPER ${COMP} COMP_U)
184200

185-
string(REGEX MATCH "^STM32([A-Z][0-9])([0-9A-Z][0-9][A-Z][0-9A-Z])?_?(M[47])?.*$" COMP_U ${COMP_U})
201+
string(REGEX MATCH "^STM32([FGHLW][0-9BL])([0-9A-Z][0-9M][A-Z][0-9A-Z])?_?(M[47])?.*$" COMP_U ${COMP_U})
186202
if(CMAKE_MATCH_1)
187203
list(APPEND HAL_FIND_COMPONENTS_FAMILIES ${COMP})
204+
message(TRACE "FindHAL: append COMP ${COMP} to HAL_FIND_COMPONENTS_FAMILIES")
188205
continue()
189206
endif()
190207
if(${COMP_L} IN_LIST HAL_DRIVERS)
191208
list(APPEND HAL_FIND_COMPONENTS_DRIVERS ${COMP})
209+
message(TRACE "FindHAL: append COMP ${COMP} to HAL_FIND_COMPONENTS_DRIVERS")
192210
continue()
193211
endif()
194212
string(REGEX REPLACE "^ll_" "" COMP_L ${COMP_L})
195213
if(${COMP_L} IN_LIST HAL_LL_DRIVERS)
196214
list(APPEND HAL_FIND_COMPONENTS_DRIVERS_LL ${COMP})
215+
message(TRACE "FindHAL: append COMP ${COMP} to HAL_FIND_COMPONENTS_DRIVERS_LL")
197216
continue()
198217
endif()
199-
message(FATAL_ERROR "Unknown HAL component: ${COMP}")
218+
message(FATAL_ERROR "FindHAL: unknown HAL component: ${COMP}")
200219
endforeach()
201220

202221
if(NOT HAL_FIND_COMPONENTS_FAMILIES)
@@ -209,6 +228,8 @@ if(STM32H7 IN_LIST HAL_FIND_COMPONENTS_FAMILIES)
209228
endif()
210229
list(REMOVE_DUPLICATES HAL_FIND_COMPONENTS_FAMILIES)
211230

231+
# when no explicit driver and driver_ll is given to find_component(HAL )
232+
# then search for all supported driver and driver_ll
212233
if((NOT HAL_FIND_COMPONENTS_DRIVERS) AND (NOT HAL_FIND_COMPONENTS_DRIVERS_LL))
213234
set(HAL_FIND_COMPONENTS_DRIVERS ${HAL_DRIVERS})
214235
set(HAL_FIND_COMPONENTS_DRIVERS_LL ${HAL_LL_DRIVERS})
@@ -223,7 +244,7 @@ message(STATUS "Search for HAL LL drivers: ${HAL_FIND_COMPONENTS_DRIVERS_LL}")
223244
foreach(COMP ${HAL_FIND_COMPONENTS_FAMILIES})
224245
string(TOUPPER ${COMP} COMP_U)
225246

226-
string(REGEX MATCH "^STM32([A-Z][0-9])([0-9A-Z][0-9][A-Z][0-9A-Z])?_?(M[47])?.*$" COMP_U ${COMP_U})
247+
string(REGEX MATCH "^STM32([FGHLW][0-9BL])([0-9A-Z][0-9M][A-Z][0-9A-Z])?_?(M[47])?.*$" COMP_U ${COMP_U})
227248
if(CMAKE_MATCH_3)
228249
set(CORE ${CMAKE_MATCH_3})
229250
set(CORE_C "::${CORE}")
@@ -270,6 +291,7 @@ foreach(COMP ${HAL_FIND_COMPONENTS_FAMILIES})
270291
NO_DEFAULT_PATH
271292
)
272293
if (NOT HAL_${FAMILY}_PATH)
294+
message(DEBUG "Missing HAL_${FAMILY}_PATH path")
273295
continue()
274296
endif()
275297

@@ -286,14 +308,19 @@ foreach(COMP ${HAL_FIND_COMPONENTS_FAMILIES})
286308

287309
if ((NOT HAL_${FAMILY}${CORE_U}_INCLUDE) OR (NOT HAL_${FAMILY}${CORE_U}_SOURCE))
288310
set(HAL_${COMP}_FOUND FALSE)
311+
message(DEBUG "FindHAL: did not find path to HAL /src or /inc dir")
289312
continue()
290313
endif()
291314

292315
if(NOT (TARGET HAL::STM32::${FAMILY}${CORE_C}))
316+
message(TRACE "FindHAL: creating library HAL::STM32::${FAMILY}${CORE_C}")
293317
add_library(HAL::STM32::${FAMILY}${CORE_C} INTERFACE IMPORTED)
294-
target_link_libraries(HAL::STM32::${FAMILY}${CORE_C} INTERFACE STM32::${FAMILY}${CORE_C} CMSIS::STM32::${FAMILY}${CORE_C})
318+
target_link_libraries(HAL::STM32::${FAMILY}${CORE_C} INTERFACE
319+
STM32::${FAMILY}${CORE_C}
320+
CMSIS::STM32::${FAMILY}${CORE_C})
295321
target_include_directories(HAL::STM32::${FAMILY}${CORE_C} INTERFACE "${HAL_${FAMILY}${CORE_U}_INCLUDE}")
296322
target_sources(HAL::STM32::${FAMILY}${CORE_C} INTERFACE "${HAL_${FAMILY}${CORE_U}_SOURCE}")
323+
message(TRACE "REMOVE ME: depends STM32::${FAMILY}${CORE_C} CMSIS::STM32::${FAMILY}${CORE_C}")
297324
endif()
298325

299326
foreach(DRV_COMP ${HAL_FIND_COMPONENTS_DRIVERS})
@@ -318,6 +345,7 @@ foreach(COMP ${HAL_FIND_COMPONENTS_FAMILIES})
318345

319346
set(HAL_${DRV_COMP}_FOUND TRUE)
320347
if(HAL_${FAMILY}${CORE_U}_${DRV}_SOURCE AND (NOT (TARGET HAL::STM32::${FAMILY}::${DRV})))
348+
message(TRACE "FindHAL: creating library HAL::STM32::${FAMILY}${CORE_C}::${DRV}")
321349
add_library(HAL::STM32::${FAMILY}${CORE_C}::${DRV} INTERFACE IMPORTED)
322350
target_link_libraries(HAL::STM32::${FAMILY}${CORE_C}::${DRV} INTERFACE HAL::STM32::${FAMILY}${CORE_C})
323351
target_sources(HAL::STM32::${FAMILY}${CORE_C}::${DRV} INTERFACE "${HAL_${FAMILY}${CORE_U}_${DRV}_SOURCE}")
@@ -335,6 +363,7 @@ foreach(COMP ${HAL_FIND_COMPONENTS_FAMILIES})
335363
endif()
336364

337365
if((TARGET HAL::STM32::${FAMILY}${CORE_C}::${DRV}) AND (NOT (TARGET HAL::STM32::${FAMILY}${CORE_C}::${DRV}Ex)))
366+
message(TRACE "FindHAL: creating library HAL::STM32::${FAMILY}${CORE_C}::${DRV}Ex")
338367
add_library(HAL::STM32::${FAMILY}${CORE_C}::${DRV}Ex INTERFACE IMPORTED)
339368
target_link_libraries(HAL::STM32::${FAMILY}${CORE_C}::${DRV}Ex INTERFACE HAL::STM32::${FAMILY}${CORE_C}::${DRV})
340369
target_sources(HAL::STM32::${FAMILY}${CORE_C}::${DRV}Ex INTERFACE "${HAL_${FAMILY}${CORE_U}_${DRV}_EX_SOURCE}")
@@ -365,6 +394,7 @@ foreach(COMP ${HAL_FIND_COMPONENTS_FAMILIES})
365394

366395
set(HAL_${DRV_COMP}_FOUND TRUE)
367396
if(HAL_${FAMILY}${CORE_U}_${DRV}_LL_SOURCE AND (NOT (TARGET HAL::STM32::${FAMILY}${CORE_C}::LL_${DRV})))
397+
message(TRACE "FindHAL: creating library HAL::STM32::${FAMILY}${CORE_C}::LL_${DRV}")
368398
add_library(HAL::STM32::${FAMILY}${CORE_C}::LL_${DRV} INTERFACE IMPORTED)
369399
target_include_directories(HAL::STM32::${FAMILY}${CORE_C}::LL_${DRV} INTERFACE "${HAL_${FAMILY}${CORE_U}_INCLUDE}")
370400
target_sources(HAL::STM32::${FAMILY}${CORE_C}::LL_${DRV} INTERFACE "${HAL_${FAMILY}${CORE_U}_${DRV}_LL_SOURCE}")

cmake/stm32/common.cmake

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,12 @@ set(STM32_SUPPORTED_FAMILIES_LONG_NAME
22
STM32F0 STM32F1 STM32F2 STM32F3 STM32F4 STM32F7
33
STM32G0 STM32G4
44
STM32H7_M4 STM32H7_M7
5-
STM32L0 STM32L1 STM32L4 STM32L5)
5+
STM32L0 STM32L1 STM32L4 STM32L5
6+
STM32WB STM32WL )
67

78
foreach(FAMILY ${STM32_SUPPORTED_FAMILIES_LONG_NAME})
8-
string(REGEX MATCH "^STM32([A-Z][0-9])_?(M[47])?" FAMILY ${FAMILY})
9+
# append short names (F0, F1, H7_M4, ...) to STM32_SUPPORTED_FAMILIES_SHORT_NAME
10+
string(REGEX MATCH "^STM32([FGHLW][0-9BL])_?(M[47])?" FAMILY ${FAMILY})
911
list(APPEND STM32_SUPPORTED_FAMILIES_SHORT_NAME ${CMAKE_MATCH_1})
1012
endforeach()
1113
list(REMOVE_DUPLICATES STM32_SUPPORTED_FAMILIES_SHORT_NAME)
@@ -70,6 +72,7 @@ function(stm32_generate_hex_file TARGET)
7072
)
7173
endfunction()
7274

75+
# This function takes FAMILY (e.g. L4) and DEVICE (e.g. L496VG) to output TYPE (e.g. L496xx)
7376
function(stm32_get_chip_type FAMILY DEVICE TYPE)
7477
set(INDEX 0)
7578
foreach(C_TYPE ${STM32_${FAMILY}_TYPES})
@@ -93,7 +96,7 @@ function(stm32_get_chip_info CHIP)
9396

9497
string(TOUPPER ${CHIP} CHIP)
9598

96-
string(REGEX MATCH "^STM32([A-Z][0-9])([0-9A-Z][0-9][A-Z][0-9A-Z]).*$" CHIP ${CHIP})
99+
string(REGEX MATCH "^STM32([FGHLW][0-9BL])([0-9A-Z][0-9M][A-Z][0-9A-Z]).*$" CHIP ${CHIP})
97100

98101
if((NOT CMAKE_MATCH_1) OR (NOT CMAKE_MATCH_2))
99102
message(FATAL_ERROR "Unknown chip ${CHIP}")
@@ -127,8 +130,10 @@ function(stm32_get_cores CORES)
127130
cmake_parse_arguments(PARSE_ARGV 1 ARG "${ARG_OPTIONS}" "${ARG_SINGLE}" "${ARG_MULTIPLE}")
128131

129132
if(ARG_CHIP)
133+
# TODO: I don't get why stm32_get_chip_info is called in stm32_get_cores
130134
stm32_get_chip_info(${ARG_CHIP} FAMILY ARG_FAMILY TYPE ARG_TYPE DEVICE ARG_DEVICE)
131135
elseif(ARG_FAMILY AND ARG_DEVICE)
136+
# TODO: I don't get why stm32_get_chip_type is called in stm32_get_cores
132137
stm32_get_chip_type(${ARG_FAMILY} ${ARG_DEVICE} ARG_TYPE)
133138
elseif(ARG_FAMILY)
134139
if(${ARG_FAMILY} STREQUAL "H7")
@@ -141,8 +146,15 @@ function(stm32_get_cores CORES)
141146
message(FATAL_ERROR "Either CHIP or FAMILY or FAMILY/DEVICE should be specified for stm32_get_cores()")
142147
endif()
143148

149+
# TODO following is the only part really used by FindCMSIS. Maybe a cleanup is needed
144150
if(${ARG_FAMILY} STREQUAL "H7")
145151
stm32h7_get_device_cores(${ARG_DEVICE} ${ARG_TYPE} CORE_LIST)
152+
elseif(${ARG_FAMILY} STREQUAL "WB")
153+
# note STM32WB have an M0 core but in current state of the art it runs ST stacks and is not needed/allowed to build for customer
154+
set(CORE_LIST M4)
155+
elseif(${ARG_FAMILY} STREQUAL "WL")
156+
message(WARNING "common: WL family stm32_get_cores has not been tested")
157+
set(CORE_LIST M4 M0)
146158
endif()
147159
set(${CORES} "${CORE_LIST}" PARENT_SCOPE)
148160
endfunction()
@@ -163,7 +175,7 @@ function(stm32_get_memory_info)
163175
stm32_get_chip_type(${INFO_FAMILY} ${INFO_DEVICE} INFO_TYPE)
164176
endif()
165177

166-
string(REGEX REPLACE "^[FGHL][0-9][0-9A-Z][0-9].([3468BCDEFGHIZ])$" "\\1" SIZE_CODE ${INFO_DEVICE})
178+
string(REGEX REPLACE "^[FGHLW][0-9BL][0-9A-Z][0-9M].([3468BCDEFGHIYZ])$" "\\1" SIZE_CODE ${INFO_DEVICE})
167179

168180
if(SIZE_CODE STREQUAL "3")
169181
set(FLASH "8K")
@@ -176,6 +188,7 @@ function(stm32_get_memory_info)
176188
elseif(SIZE_CODE STREQUAL "B")
177189
set(FLASH "128K")
178190
elseif(SIZE_CODE STREQUAL "C")
191+
# Note there is a problem with STM32WB15CC (320kB flash)
179192
set(FLASH "256K")
180193
elseif(SIZE_CODE STREQUAL "D")
181194
set(FLASH "384K")
@@ -189,6 +202,8 @@ function(stm32_get_memory_info)
189202
set(FLASH "1536K")
190203
elseif(SIZE_CODE STREQUAL "I")
191204
set(FLASH "2048K")
205+
elseif(SIZE_CODE STREQUAL "Y")
206+
set(FLASH "640K")
192207
elseif(SIZE_CODE STREQUAL "Z")
193208
set(FLASH "192K")
194209
else()
@@ -313,4 +328,5 @@ include(stm32/l0)
313328
include(stm32/l1)
314329
include(stm32/l4)
315330
include(stm32/l5)
316-
331+
include(stm32/wb)
332+
#include(stm32/wl) #TODO

0 commit comments

Comments
 (0)