使用CLion编译STM32工程(Windows10)
版本 | 日期 | 描述 |
---|---|---|
V1.0.0 | 20230112 | 记录CLion编译STM32工程的过程,记录编译RT-Thread、记录调试过程 |
V1.0.1 | 20230229 | 记录使用STM32CubeIde的ST-LINK_gdbserver工具调试工程的方式 |
V1.0.2 | 20240509 | jlink调试中,添加配置记录 |
一、工具安装
1.下载安装CLion
2.下载安装STM32CUBEMX
- STM32CUBEMX需要先安装Java
3.下载解压OpenOCD
- 解压内容如下:
问题记录:OpenOCD解压目录推荐英文,且名称中无空格,避免出现以下错误:
Unexpected command line argument: Files\STMicroelectronics\STM32Cube\OpenOCD-202
11118-0.11.0\share\openocd\scripts...// 问题是由于安装在"Program Files"目录造成的
4.下载安装MinGw
- 推荐安装在非C盘目录,安装完成后勾选安装以下内容:
- 添加环境变量:右键桌面左下角win图标,选择系统,在系统->高级系统设置->高级->环境变量->PATH添加路径
- 配置完成后,重启电脑,在命令查看验证安装是否成功:
- 使用快捷键win+r,然后在运行输入cmd命令打开控制台:
- 输入命令
gcc -v
查看是否成功安装:
5.下载解压GCC
- 解压内容:
- 添加环境变量:右键桌面左下角win图标,选择系统,在系统->高级系统设置->高级->环境变量->PATH添加路径:
- 配置完成后,重启电脑,在命令查看验证安装是否成功:
- 使用快捷键win+r,然后在运行输入cmd命令打开控制台:
- 输入命令
arm-none-eabi-gcc -v
查看是否成功安装:
二、CLion配置
1.插件使用:
- 选择File->Settings
- 选择
Plugins
- 中文化:搜索
chinese
,选择安装
- VS配色:搜索
visula
,选择安装
2 配置Toolchains
- File->Settings->Build,Execution,Deployment,添加MinGW-STM32:
- 修改
C Compiler
和C++ Compiler
为之前的gcc目录:
- 配置完成后,在CMake栏下查看是否可以选择使用
3.配置STM32CubeMX和OpenOCD
- File->Settings->Build,Execution,Deployment->Embedded Development下添加软件对应路径:
三、CLion使用
1.创建一个STM32工程进行测试
- File->New->Project
- 选择STM32CubeMX,修改Location到自己想使用的目录,然后点击create创建
- 点击Open with STM32CubeMX,跳转到STM32Cubemx进行配置:
- 要修改芯片,可以自己在stm32cubemx选择,只需要保证cubemx工程路径和clion生成的cubemx路径一致就行,目的是新生成的可以直接覆盖旧工程。
- 这里替换成了stm32F407vet6,cubemx配置完成后,点击
GENERATE CODE
生成,弹窗点击YES - 回到Clion,会弹出板卡选择窗口,这些信配置文件主要和OpenOCD有关,不影响编译,这里没有我们用的,点击
X
先不进行配置。
- 然后现在可以编辑工程了,点击编译图标
- 编译完成如下:
2.烧录与调试: openOCD-STLINKV2
- 点击编译按钮旁边下拉框,选择
Edit Configurations
- 点击
+
图标,选择OpenOCD Download & Run
- 配置
OpenOCD Dowload & Run
- 在
Board config file
里需要添加的就是我们板子对应的配置文件,这里我们在工程里创建一个stlink.cfg
: - 然后添加到
OpenOCD
配置里面 - 配置文件
stlink.cfg
修改:
source [find interface/stlink.cfg]
transport select hla_swd
source [find target/stm32f4x.cfg]
adapter speed 10000
- 下载固件,点击烧录图标:
- 点击调试图标,进行调试:
3.烧录与调试: JLINK-gdbserver
- 配置jlink:
- 配置信息:
以下是填写的配置信息:
tcp:localhost:2331
G:\Program Files\SEGGER\JLink\JLinkGDBServer.exe
-device STM32F407VE -if SWD -speed 4000k
-device STM32F103C8 -if SWD -speed 4000k
- 备注:调试时jlinkgdbserver会打开软件,在调试过程中不能关闭软件,关闭了就不能调试了。
4.烧录与调试:ST-LINK_gdbserver.exe
- ST-LINK_gdbserver.exe是STM32CubeIDE的一个调试工具,这里要使用,需要先安装STM32CubeIDE
- 配置gdb
- 其中GDB服务器选项是根据IDE里面的配置查找的,查找方式如下:
- 通过ide的配置可以获取到如下内容:
G:\ST\STM32CubeIDE_1.10.1\STM32CubeIDE\plugins\com.st.stm32cube.ide.mcu.externaltools.stlink-gdb-server.win32_2.0.300.202203231527\tools\bin\ST-LINK_gdbserver.exe -p 61234 -l 1 -d -s -cp G:\ST\STM32CubeIDE_1.10.1\STM32CubeIDE\plugins\com.st.stm32cube.ide.mcu.externaltools.cubeprogrammer.win32_2.0.301.202207041506\tools\bin -m 0 -k
-
添加tcp端口
-
把
G:\ST\STM32CubeIDE_1.10.1\STM32CubeIDE\plugins\com.st.stm32cube.ide.mcu.externaltools.stlink-gdb-server.win32_2.0.300.202203231527\tools\bin\ST-LINK_gdbserver.exe
填写到GDB服务器
-
把
-p 61234 -l 1 -d -s -cp G:\ST\STM32CubeIDE_1.10.1\STM32CubeIDE\plugins\com.st.stm32cube.ide.mcu.externaltools.cubeprogrammer.win32_2.0.301.202207041506\tools\bin -m 0 -k
填写到GDB服务器实参
-
然后就可以调试了,其他配置可以使用命令
ST-LINK_gdbserver.exe -h
查看
-
调试效果如下:
四、rt-thread使用CLion
- 使用的是4.0.5的rt-thread,通过env配置,在env输入命令
scons --target=cmake
,即可生成支持Clion的工程
- 生成完毕后,用CLion打开文件目录,然后调试和编译就和stm32cubemx生成的一致了。
1.rt-thread添加hex生成
- 修改
project\tools\cmake.py
文件,该文件会生成CMakeList:修改如下,添加COMMAND ${CMAKE_OBJCOPY} -O ihex ${CMAKE_PROJECT_NAME}.elf
cm_file.write("ADD_CUSTOM_COMMAND(TARGET ${CMAKE_PROJECT_NAME}.elf POST_BUILD \nCOMMAND ${CMAKE_OBJCOPY} -O binary ${CMAKE_PROJECT_NAME}.elf ${CMAKE_PROJECT_NAME}.bin \nCOMMAND ${CMAKE_OBJCOPY} -O ihex ${CMAKE_PROJECT_NAME}.elf ${CMAKE_PROJECT_NAME}.hex \nCOMMAND ${CMAKE_SIZE} ${CMAKE_PROJECT_NAME}.elf)")
附录:
参考内容
稚晖君:配置CLion用于STM32开发
嵌入式开发:配置CLion用于STM32开发
在 Clion 中调试 rt-thread 工程