Reference: https://club.rt-thread.org/ask/article/59411cc998abc897.html
clion: CLion: A Cross-Platform IDE for C and C++ by JetBrains, 免费使用30天, 教育可以免费使用, 或者淘宝
openocd: Download OpenOCD for Windows (gnutoolchains.com)
注意 openocd 不能使用 STM32CubeIDE 自带的,STM32CubeIDE 有做一定的魔改操作。
需要将 bin 文件夹添加到系统环境变量。
STM32CubeIDE : [STM32CubeIDE - STM32的集成开发环境 - 意法半导体STMicroelectronics](https://www.st.com/zh/development-tools/STM32CubeIDE .html)
STM32CubeMX : [STM32CubeMX - STM32Cube初始化代码生成器 - 意法半导体STMicroelectronics](https://www.st.com/zh/development-tools/STM32CubeMX .html)
建议使用 STM32CubeIDE 来配置项目,也建议安装 STM32CubeIDE 来获取捆绑的一些包,或自行安装也可以。
此处仅使用 STM32CubeMX 来初始化项目来进行演示。
MinGW: Download File List - MinGW - Minimalist GNU for Windows - OSDN,Download MinGW - Minimalist GNU for Windows (sourceforge.net)
此处直接用 clion 捆绑的 MinGW, 后文介绍。
arm-none-eabi-gcc: 这个可以直接使用 stm32cube ide 自带的。
不建议使用 clion 直接新建 STM32CubeMX 项目,虽然 clion 提供了该功能。原因是 clion 会默认一个芯片来进行创建并打开 STM32CubeMX 来初始化项目,这个芯片往往不是我们想要的。
我们使用 STM32CubeIDE 或者 STM32CubeMX 来创建一个项目,如果是 STM32CubeMX 需要注意以下内容, STM32CubeIDE 则默认配置好这些内容了。
点击 GENERATE CODE 生成项目文件。
使用 clion 打开项目,可以选择 ioc 文件并作为项目打开。
打开后,会自动加载内容,并弹出面板配置文件,自制板卡选择跳过即可。
之后项目会自动更新 cmake 文件。
添加一个 MinGW 环境。
MinGW 和 CMake 以及调试器,选择捆绑的版本。
构建工具, C 编译器,C++ 编译器可以选 STM32Cube IDE 内置的版本。
CMake 栏可以确定一下工具链是否正确。
此时,编译项目,可以发现项目可以正常编译。
添加 openocd 和 STM32CubeMX 的路径。
在此之前,建议新建一个 config
文件夹,来保存一些内容(后文介绍)。
点击编辑配置。
此时有一个默认的 CMake 配置,但这个配置不能用于烧录和调试。
点击 +
号,添加一个 openocd 下载并运行
的配置。
主要需要配置的内容为面板配置文件
,此处翻译不准,原文为 Board config file
,即 板级配置文件。
这个文件需要自己生成,可以参考 openocd
目录下的这几个目录内的文件夹。
- board:板卡配置,各种官方板卡
- interface:仿真器类型配置,比如ST-Link、CMSIS-DAP等都在里面
- target:芯片类型配置,STM32F1xx、STM32L0XX等等都在里面
此处,我使用的是 cmsis-dap(安富莱 H7-Tool),因此,可以新建一个 cmsis-dap.cfg
:
内容如下:
# choose st-link/j-link/dap-link etc.
adapter driver cmsis-dap
transport select swd
# 0x10000 = 64K Flash Size
set FLASH_SIZE 0x20000
source [find target/stm32h7x.cfg]
# download speed = 10MHz
adapter speed 10000
关于 openocd
的具体解释可以参考:Top (OpenOCD User’s Guide)
如果使用的是 st-link,则可以这样修改:
source [find interface/stlink.cfg]
transport select hla_swd
source [find target/stm32f1x.cfg]
# download speed = 10MHz
adapter speed 10000
此时,就可以正常下载项目了。
点击编辑配置,新增 嵌入式 GDB 服务器
配置。
修改内容如下:
target remote
对应openocd 下载并运行
中的GDB 端口
;GDB 服务器
选择openocd.exe
的目录;- GDB 服务器实参根据对应的 调试器 和 芯片 选择。
此时,点击调试,可以发现程序可以正常调试。
我们可以在 外设 下添加 svd 文件,以实现寄存器监看。
如果找不到 svd 文件,可以到以下目录中查找。
\STM32CubeIDE_1.13.1\STM32CubeIDE\plugins\com.st.stm32cube.ide.mcu.productdb.debug_2.1.0.202306151215\resources\cmsis\STMicroelectronics_CMSIS_SVD
此处包含了所有 stm 的 mcu 的 svd 文件,常用的 svd 文件也可以保存到 config 文件夹,用以拷贝使用。
以下配置最好在 STM32CubeIDE 里进行配置,否则 STM32CubeMX 重新配置初始化代码后,会删除以下配置。
似乎是 Clion 在检测到更改时,会自动从 .cproject 解析相关配置?
clion 项目基于 CMakeLists.txt 文件来构建项目,针对于我们自己添加的 .c/.h 文件,我们只需在以下两处进行添加即可。
在此处添加即可,前面加上 -D
。
- 无值宏:
add_definitions(-DMG_ENABLE_OPENSSL)
- 有值宏:
add_definitions(-DLIBEVENT_VERSION_NUMBER=0x02010800)
在高版本的 CMake 中,也可以使用 add_compile_definitions()
来添加宏定义。
根据 CMAKE_BUILD_TYPE
来指定优化参数,对应参数为:
- Release
- Debug
- RelWithDebInfo
- MinSizeRel
CMAKE_BUILD_TYPE
默认不是以上的参数,是空值,优化参数,此处默认 Og -g
等级。
GCC 优化等级可以参考:Optimize Options (Using the GNU Compiler Collection (GCC))