cmake_minimum_required(VERSION 3.22) # ============================================================ # STM32F103C8 标准外设库 (StdPeriph V3.5.0) 工程 # 工具链文件: cmake/gcc-arm-none-eabi.cmake (在 CLion 的 CMake 设置里指定) # 链接脚本: STM32F103XX_FLASH.ld (64K Flash / 20K RAM) # ============================================================ set(CMAKE_C_STANDARD 11) set(CMAKE_C_STANDARD_REQUIRED ON) set(CMAKE_C_EXTENSIONS ON) if(NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE "Debug") endif() set(CMAKE_PROJECT_NAME stm32f103_spl_clion) project(${CMAKE_PROJECT_NAME}) enable_language(C ASM) set(CMAKE_EXPORT_COMPILE_COMMANDS TRUE) # 标准库外设驱动:全部收集,靠工具链里的 -ffunction-sections + --gc-sections # 自动裁掉未引用的源文件,无需手动挑 file(GLOB SPL_SRC "StdPeriph_Driver/src/*.c") add_executable(${CMAKE_PROJECT_NAME} CMSIS/startup_stm32f10x_md.s # GCC 版启动文件 (TrueSTUDIO) CMSIS/core_cm3.c CMSIS/system_stm32f10x.c ${SPL_SRC} User/main.c BSP/Delay.c BSP/LED.c BSP/Key.c BSP/Buzzer.c BSP/Buzzer.h BSP/LightSensor.c BSP/LightSensor.h BSP/OLED.c BSP/OLED.h BSP/OLED_Font.h ) target_include_directories(${CMAKE_PROJECT_NAME} PRIVATE CMSIS # stm32f10x.h, core_cm3.h, system_stm32f10x.h StdPeriph_Driver/inc # stm32f10x_gpio.h 等外设头 User # stm32f10x_conf.h BSP # delay.h ) target_compile_definitions(${CMAKE_PROJECT_NAME} PRIVATE STM32F10X_MD # STM32F103C8 属于 Medium density USE_STDPERIPH_DRIVER # 启用标准库外设驱动 -> stm32f10x.h 会 include stm32f10x_conf.h ) # CPU flag(-mcpu=cortex-m3)、链接脚本、nano.specs、gc-sections 都已在工具链文件里设好 target_link_libraries(${CMAKE_PROJECT_NAME} m) # 打印 Flash / RAM 占用 add_custom_command(TARGET ${CMAKE_PROJECT_NAME} POST_BUILD COMMAND ${CMAKE_SIZE} $ COMMENT "Memory usage" )