Просмотр исходного кода

Merge pull request #225 from spacefisch/mueller/blinky-example-update

Blinky example minor improvement
Julien Staub 4 лет назад
Родитель
Сommit
5381dc1455
2 измененных файлов с 62 добавлено и 30 удалено
  1. 2 0
      README.md
  2. 60 30
      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-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.
+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.
 
 # Usage

+ 60 - 30
examples/blinky/CMakeLists.txt

@@ -4,9 +4,33 @@ set(CMAKE_TOOLCHAIN_FILE ${CMAKE_CURRENT_SOURCE_DIR}/../../cmake/stm32_gcc.cmake
 project(stm32-blinky C ASM)
 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:
+# Configure here which STM32 target(s) to build
+option(BLINKY_F4_EXAMPLE "Compile F4 example" ON)
+option(BLINKY_F1_EXAMPLE "Compile F1 example" OFF)
+option(BLINKY_L0_EXAMPLE "Compile L0 example" OFF)
+
+set(HAL_COMP_LIST RCC GPIO CORTEX)
+set(CMSIS_COMP_LIST "")
+
+if(BLINKY_F4_EXAMPLE)
+    list(APPEND CMSIS_COMP_LIST STM32F4)
+    list(APPEND HAL_COMP_LIST STM32F4)
+endif()
+
+if(BLINKY_F1_EXAMPLE)
+    list(APPEND CMSIS_COMP_LIST STM32F1)
+    list(APPEND HAL_COMP_LIST STM32F1)
+endif()
+
+if(BLINKY_L0_EXAMPLE)
+    list(APPEND CMSIS_COMP_LIST STM32L0)
+    list(APPEND HAL_COMP_LIST STM32L0)
+endif()
+
+find_package(CMSIS COMPONENTS "${CMSIS_COMP_LIST}" REQUIRED)
+find_package(HAL COMPONENTS "${HAL_COMP_LIST}" REQUIRED)
+
+# Find all device specific drivers:
 #find_package(HAL COMPONENTS STM32L0 STM32F1 STM32F4 REQUIRED)
 # Find drivers for all families:
 #find_package(HAL COMPONENTS RCC GPIO CORTEX REQUIRED)
@@ -16,34 +40,40 @@ find_package(HAL COMPONENTS STM32L0 STM32F1 STM32F4 RCC GPIO CORTEX REQUIRED)
 #find_package(HAL REQUIRED)
 
 # STM32F4-Discovery
-add_executable(stm32-blinky-f4 blinky.c stm32f4xx_hal_conf.h)
-target_link_libraries(stm32-blinky-f4 
-    HAL::STM32::F4::RCC
-    HAL::STM32::F4::GPIO
-    HAL::STM32::F4::CORTEX
-    CMSIS::STM32::F407VG
-    STM32::NoSys 
-)
-stm32_print_size_of_target(stm32-blinky-f4)
+if(BLINKY_F4_EXAMPLE)
+    add_executable(stm32-blinky-f4 blinky.c stm32f4xx_hal_conf.h)
+    target_link_libraries(stm32-blinky-f4
+        HAL::STM32::F4::RCC
+        HAL::STM32::F4::GPIO
+        HAL::STM32::F4::CORTEX
+        CMSIS::STM32::F407VG
+        STM32::NoSys
+    )
+    stm32_print_size_of_target(stm32-blinky-f4)
+endif()
 
 # 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(BLINKY_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
-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(BLINKY_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()