提供一个基于 CMake 构建的模块化的 STM32H750XBH6 工程模板,程序可通过pyOCD烧录并运行在开发板的外部 QSPI FLASH 中。
pyocd
调用 FLM 格式的外部下载算法,将程序烧录到外部 Flash 中。- USB 虚拟串口功能。
- 基于命令行、VSCode、CLion 的编译和烧录方式。
- 在 VSCode、CLion 中通过
pyocd
调试运行在外部 Flash 中的程序。
安装如下软件,并且做到可用命令行验证版本
~
❯ cmake --version
cmake version 3.31.6
CMake suite maintained and supported by Kitware (kitware.com/cmake).
~
❯ pyocd --version
0.38.0
~
❯ ninja --version
1.12.1
~
❯ arm-none-eabi-gcc --version
arm-none-eabi-gcc (Fedora 15.1.0-1.fc42) 15.1.0
Copyright (C) 2025 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
其中ninja和cmake可由clion提供,如果仅仅使用clion,不必添加进环境变量
工具 | 版本 | 说明 |
---|---|---|
STM32CubeMX | 6.15 | 6.15 版本添加了对 GCC 和 ST Clang 编译器的支持,并提供了 CMake 预设脚本。 |
- 反客科技:提供开发板资料和使用的 FLM 格式的外部下载算法。
- 交流群:536665479、994246105
- Peakors/STM32H750XBH6_Template:提供 CubeMX 的 ioc 工程模板、USB 虚拟串口的实现、
printf
和scanf
重定向到串口1。本项目是在此基础上发展而来的。
此方法便于模块化管理用户代码。例如,需要添加 Drivers/User
目录下的驱动文件。
Drivers/User
目录结构如下:
.
├── CMakeLists.txt
├── Inc
│ └── user_driver.h
└── Src
└── user_driver.c
Drivers/User/CMakeLists.txt
文件内容如下:
# 查找目录下的所有源文件
file(GLOB SOURCES "Src/*.c")
# 添加一个静态库
add_library(user_driver STATIC ${SOURCES})
# 指定头文件目录
target_include_directories(user_driver
PUBLIC
"${CMAKE_CURRENT_SOURCE_DIR}/Inc"
)
# 链接 STM32CubeMX 生成的目标
target_link_libraries(user_driver
PRIVATE
stm32cubemx
)
在顶层 CMakeLists.txt
中添加此模块:
# ... (其他配置)
# Add STM32CubeMX generated sources
add_subdirectory(cmake/stm32cubemx)
# 添加 Driver/User 模块
add_subdirectory(Drivers/User)
# ... (其他配置)
# Add linked libraries
target_link_libraries(${CMAKE_PROJECT_NAME}
stm32cubemx
# Add user defined libraries
user_driver
)
# 调用预设的配置 (例如 Debug)
cmake --preset Debug
# 使用预设进行构建
cmake --build --preset Debug
不同容量的QSPI FLASH使用的配置不同,具体参考pyocd_user.py
pyocd flash --target stm32h750xx -O connect_mode=under-reset ./build/Debug/STM32H750XBH6_Template.bin@0x90000000
原理参考: 使用pyocd调用FLM格式的外部下载算法
参考文件使用 VSCode 开发和调试
参考文件使用 Clion 开发和调试
本模板要求开发板 QSPI Flash 的引脚配置与反客科技的开发板一致。
开发板 | 淘宝链接 |
---|---|
核心板1 | Taobao Link |
核心板2 | Taobao Link |
核心板3 | Taobao Link |
金手指核心板 | Taobao Link |
B2B核心板 | Taobao Link |
邮票孔核心板 | Taobao Link |
等待补充
- 开启浮点数打印支持
- 使用c++开发(待更新)