Skip to content

haoruanwn/STM32H750XBH6_CMake_Template

Repository files navigation

STM32H750XBH6_CMake_Template

说明

提供一个基于 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 虚拟串口的实现、printfscanf 重定向到串口1。本项目是在此基础上发展而来的。

使用说明

通过 CMake 子模块的方式添加用户文件

此方法便于模块化管理用户代码。例如,需要添加 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

使用 pyocd 烧录

不同容量的QSPI FLASH使用的配置不同,具体参考pyocd_user.py

pyocd flash --target stm32h750xx -O connect_mode=under-reset ./build/Debug/STM32H750XBH6_Template.bin@0x90000000

原理参考: 使用pyocd调用FLM格式的外部下载算法

使用 VSCode 开发和调试

参考文件使用 VSCode 开发和调试

使用 CLion 开发和调试

参考文件使用 Clion 开发和调试

适用开发板

本模板要求开发板 QSPI Flash 的引脚配置与反客科技的开发板一致。

开发板 淘宝链接
核心板1 Taobao Link
核心板2 Taobao Link
核心板3 Taobao Link
金手指核心板 Taobao Link
B2B核心板 Taobao Link
邮票孔核心板 Taobao Link

拓展内容

等待补充

About

反客STM32H750XBH6开发板的工程模板,使用CMake构建,提供基于pyocd的外部烧录方式

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages