如何在ST Visual Develop中导入STM8S/A标准外设库?新手求高效方案
STM8S/A标准外设库的高效管理方案(替代复制粘贴)
一、无CMake的简易共享方案(适合新手过渡)
不用复制库文件到项目,直接引用外部的库目录,步骤如下:
- 把STM8S/A标准外设库放在项目外的固定路径,比如
../STM8S_StdPeriph_Lib - 在IDE(IAR for STM8/STM8CubeIDE等)的项目设置中,找到头文件包含路径,添加库的
inc目录 - 右键项目选择「添加现有文件」,从库的
src目录中仅挑选当前项目用到的外设源文件(比如stm8s_gpio.c、stm8s_uart.c),无需全选 - 所有项目共用一份库文件,修改库时无需同步到多个项目
二、CMake化外设库并作为依赖引入
如果要通过CMake实现库的复用,按以下步骤操作:
1. 为外设库编写CMake配置
在STM8外设库的根目录创建CMakeLists.txt,内容示例:
cmake_minimum_required(VERSION 3.16) project(STM8S_StdPeriph_Lib) # 收集库的源文件(可按需过滤,只保留需要的外设文件) file(GLOB SRCS "${CMAKE_CURRENT_SOURCE_DIR}/src/*.c") # 生成静态库 add_library(stm8_stdperiph STATIC ${SRCS}) # 对外暴露头文件路径 target_include_directories(stm8_stdperiph PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/inc" ) # 指定芯片型号编译定义(根据你的硬件修改,比如STM8S007、STM8S103) target_compile_definitions(stm8_stdperiph PUBLIC STM8S103)
2. 在你的项目中引入该库
在项目根目录的CMakeLists.txt中添加以下配置:
cmake_minimum_required(VERSION 3.16) project(My_STM8_Project) # 配置STM8工具链(需提前准备好适配STM8的toolchain文件) set(CMAKE_TOOLCHAIN_FILE "${CMAKE_CURRENT_SOURCE_DIR}/cmake/stm8_toolchain.cmake") # 引入外设库作为子项目 add_subdirectory("../STM8S_StdPeriph_Lib" "${CMAKE_BINARY_DIR}/stm8_stdperiph") # 定义你的项目源文件 add_executable(${PROJECT_NAME} src/main.c) # 链接外设库 target_link_libraries(${PROJECT_NAME} PRIVATE stm8_stdperiph) # 项目自身的编译配置 target_compile_definitions(${PROJECT_NAME} PUBLIC STM8S103) target_include_directories(${PROJECT_NAME} PRIVATE inc)
3. IDE中加载CMake项目
- 如果用STM8CubeIDE:直接导入项目的
CMakeLists.txt,在工具链设置中指定STM8编译器(如SDCC或IAR) - 如果用VSCode:安装CMake Tools插件,配置好STM8工具链路径后,加载项目即可
新手额外提示
- 只添加项目用到的外设源文件,减少编译时间
- 把
stm8s_conf.h放在自己项目的inc目录,覆盖库的默认配置,实现项目独立的外设开关 - 非CMake IDE(如IAR)可通过工作区功能,将外设库作为独立项目加入工作区,当前项目依赖该库项目实现共享
内容的提问来源于stack exchange,提问作者Bruno Alexandre Fraga
相关产品推荐
相关产品推荐

