Robin Mueller 4 лет назад
Родитель
Сommit
bf5f2925ed
2 измененных файлов с 44 добавлено и 21 удалено
  1. 2 0
      README.md
  2. 42 21
      examples/blinky/CMakeLists.txt

+ 2 - 0
README.md

@@ -30,6 +30,8 @@ It uses cmake and GCC, along with newlib (libc), STM32Cube. Supports F0 F1 F2 F3
 * `fetch-cube` ([examples/fetch-cube](examples/fetch-cube)) - example of using FetchContent for fetching STM32Cube from ST's git.
 * `fetch-cube` ([examples/fetch-cube](examples/fetch-cube)) - example of using FetchContent for fetching STM32Cube from ST's git.
 * `fetch-cmsis-hal` ([examples/fetch-cmsis-hal](examples/fetch-cmsis-hal)) - example of using FetchContent for fetching STM32 CMSIS and HAL from ST's git.
 * `fetch-cmsis-hal` ([examples/fetch-cmsis-hal](examples/fetch-cmsis-hal)) - example of using FetchContent for fetching STM32 CMSIS and HAL from ST's git.
 * `blinky` ([examples/blinky](examples/blinky)) - blink led using STM32 HAL library and SysTick.
 * `blinky` ([examples/blinky](examples/blinky)) - blink led using STM32 HAL library and SysTick.
+It will compile a project for the `F4` family by default, but you can also compile for the
+`L0` and `F1` family by passing `L0_EXAMPLE=ON` or `F1_EXAMPLE=ON` to the CMake generation call.
 * `freertos` ([examples/freertos](examples/freertos)) - blink led using STM32 HAL library and FreeRTOS.
 * `freertos` ([examples/freertos](examples/freertos)) - blink led using STM32 HAL library and FreeRTOS.
 
 
 # Usage
 # Usage

+ 42 - 21
examples/blinky/CMakeLists.txt

@@ -4,9 +4,25 @@ set(CMAKE_TOOLCHAIN_FILE ${CMAKE_CURRENT_SOURCE_DIR}/../../cmake/stm32_gcc.cmake
 project(stm32-blinky C ASM)
 project(stm32-blinky C ASM)
 set(CMAKE_INCLUDE_CURRENT_DIR TRUE)
 set(CMAKE_INCLUDE_CURRENT_DIR TRUE)
 
 
-find_package(CMSIS COMPONENTS STM32L0 STM32F1 STM32F4 REQUIRED)
-find_package(HAL COMPONENTS STM32L0 STM32F1 STM32F4 RCC GPIO CORTEX REQUIRED)
-# Find all drivers:
+# F4 example enabled by default
+option(F4_EXAMPLE ON "Compile F4 example")
+option(F1_EXAMPLE OFF "Compile F1 example")
+option(L0_EXAMPLE OFF "Compile L0 example")
+
+find_package(CMSIS COMPONENTS STM32F4 REQUIRED)
+find_package(HAL COMPONENTS STM32F4 RCC GPIO CORTEX REQUIRED)
+
+if(L0_EXAMPLE)
+    find_package(CMSIS COMPONENTS STM32L0 REQUIRED)
+    find_package(HAL COMPONENTS STM32L0 REQUIRED)
+endif()
+
+if(F1_EXAMPLE)
+    find_package(CMSIS COMPONENTS STM32F1 REQUIRED)
+    find_package(HAL COMPONENTS STM32F1 REQUIRED)
+endif()
+
+# Find all device specific drivers:
 #find_package(HAL COMPONENTS STM32L0 STM32F1 STM32F4 REQUIRED)
 #find_package(HAL COMPONENTS STM32L0 STM32F1 STM32F4 REQUIRED)
 # Find drivers for all families:
 # Find drivers for all families:
 #find_package(HAL COMPONENTS RCC GPIO CORTEX REQUIRED)
 #find_package(HAL COMPONENTS RCC GPIO CORTEX REQUIRED)
@@ -27,23 +43,28 @@ target_link_libraries(stm32-blinky-f4
 stm32_print_size_of_target(stm32-blinky-f4)
 stm32_print_size_of_target(stm32-blinky-f4)
 
 
 # STM32VL-Discovery
 # STM32VL-Discovery
-add_executable(stm32-blinky-f1 blinky.c stm32f1xx_hal_conf.h)
-target_link_libraries(stm32-blinky-f1 
-    HAL::STM32::F1::RCC
-    HAL::STM32::F1::GPIO
-    HAL::STM32::F1::CORTEX
-    CMSIS::STM32::F100RB
-    STM32::NoSys
-)
-stm32_print_size_of_target(stm32-blinky-f1)
+if(F1_EXAMPLE)
+    add_executable(stm32-blinky-f1 blinky.c stm32f1xx_hal_conf.h)
+    target_link_libraries(stm32-blinky-f1
+        HAL::STM32::F1::RCC
+        HAL::STM32::F1::GPIO
+        HAL::STM32::F1::CORTEX
+        CMSIS::STM32::F100RB
+        STM32::NoSys
+    )
+    stm32_print_size_of_target(stm32-blinky-f1)
+endif()
 
 
 # STM32L0538-Discovery
 # STM32L0538-Discovery
-add_executable(stm32-blinky-l0 blinky.c stm32l0xx_hal_conf.h)
-target_link_libraries(stm32-blinky-l0
-    HAL::STM32::L0::RCC
-    HAL::STM32::L0::GPIO
-    HAL::STM32::L0::CORTEX
-    CMSIS::STM32::L053C8
-    STM32::NoSys
-)
-stm32_print_size_of_target(stm32-blinky-l0)
+if(L0_EXAMPLE)
+    add_executable(stm32-blinky-l0 blinky.c stm32l0xx_hal_conf.h)
+    target_link_libraries(stm32-blinky-l0
+        HAL::STM32::L0::RCC
+        HAL::STM32::L0::GPIO
+        HAL::STM32::L0::CORTEX
+        CMSIS::STM32::L053C8
+        STM32::NoSys
+    )
+    stm32_print_size_of_target(stm32-blinky-l0)
+endif()
+