前言
- 本系列主要用到的芯片为STM32f407ZGT6.。
- 作为系统性学习记录.。
- 开发和烧录环境采用的是Clion+cubemx+openocd。
- 代码管理采用gitee进行管理。
- 注意: 使用cmake进行管理的时候,路径不要出现中文
使用cubemx创建基本的工程
基本配置
使用clion进行打开生成的项目
参考cubemx生成的CMakelists文件,编写管理Bsp的CMakelist文件
bsp文件编写
- 先写一个bsp_init初始化函数(内部实现后面补充)
CMakelists文件的编写
cmake_minimum_required(VERSION 3.22)
# 通过设置变量定义库名称,方便修改
#
set(BSP_LIB_NAME stm32f4_bsp)
project(${BSP_LIB_NAME})
# 这句命令的意思是 将当面目录下的源文件(路径名),保存在BSP_SRCS变量中
aux_source_directory(${CMAKE_CURRENT_LIST_DIR}/ BSP_SRCS)
add_library(${BSP_LIB_NAME} INTERFACE)
# Enable CMake support for ASM and C languages
enable_language(C ASM)
# 为项目中的目标编译定义,添加特定于BSP(Board Support Package)的编译时宏定义
# 这些宏定义对于控制硬件相关的特性或行为尤其重要,确保软件能够正确地运行在不同的硬件平台上
target_compile_definitions(${BSP_LIB_NAME} INTERFACE
)
# 为指定的目标库添加接口定义目录
target_include_directories(${BSP_LIB_NAME} INTERFACE
${CMAKE_CURRENT_LIST_DIR}/
)
# 为目标stm32cubemx添加源文件接口
target_sources(${BSP_LIB_NAME} INTERFACE
# 添加的源文件列表
${BSP_SRCS}
)
target_link_directories(${BSP_LIB_NAME} INTERFACE
)
target_link_libraries(${BSP_LIB_NAME} INTERFACE
)
# Validate that STM32CubeMX code is compatible with C standard
if (CMAKE_C_STANDARD LESS 11)
message(ERROR "Generated code requires C11 or higher")
endif ()
在主的CMakelists文件中添加
在主函数中调用
工程编译(ok)
总结
- cmake方式生成是需要新版的cubemx。
- 不会涉及到cmakelist在生成代码时被覆盖的情况。
- 针对每个模块采用一个CMakelists文件管理,增加层次结构,复用性增强