Clion进行Stm32开发实操

Awwwwh2072

软件准备

Clion: https://www.jetbrains.com/clion/
STM32CubeMX: https://www.st.com/en/development-tools/stm32cubemx.html
STM32CubeCLT: https://www.st.com.cn/zh/development-tools/stm32cubeclt.html
(可选)OPENOCD: https://openocd.org/

STM32CubeMX用来提供便捷的外设配置,并生成makelist文件。
STM32CubeCLT提供了一套针对stm32的编译工具链,默认的MINGW也能用,但可能遭遇某些编译问题。
OPENOCD(Open On-Chip Debugger)提供更多的调试器支持,用JLink或STLink可以不安装,我使用DAPLINK故需要。

创建工程

(可选)设置中搜索时间与地区,可更改语言为中文。
点击创建工程后,选择左侧嵌入式-STM32CubeMX
此处可能需要手动配置STM32CubeMX与STM32CubeCLT。

配置好路径后,点击启动CubeMX,依据你的芯片创建一个新工程,完成基本时钟配置,开个灯的GPIO。
注意需要修改生成类型为GCC,然后生成代码。复制你的工程路径。

回到Clion中,将工程路径切换到你刚刚CubeMX的工程路径。如果一切正常,CLion将能够点击进行下一步。

项目设置

打开工程后,会弹出工具链编辑窗口(如果没有可以在设置中找到),我们新建一个STM工具链。
然后需要填写对应的参数,这里的每一项路径都需要我们从STM32CubeCLT的安装文件夹去寻找。

保存好进行下一步,然后会弹出CMAKE配置窗口,先取消启用默认的配置文件,新建一个配置文件,点击启用。
工具链选择我们刚才配置的STM32工具链,生成器选择Ninja。同时在CMAKE选项参数中填写: –preset “Debug”

点击应用后关闭窗口,此时工程会自动加载CMAKE,现在可以尝试构建一下。此时可能会报错。

点击报错位置,会自动转到.ld文件,我们需要对其中进行修改。按照注释这是由于GCC版本过低,我们只需要删除READONLY即可。
完成后再次点击构建,我们会发现此已经正常了。

构建正常后,如果选用JLink或者STLink可以直接在调试服务器处添加对应调试器。

使用其他调试器的点击运行配置,新建运行配置,选择OPENOCD下载并运行,目标和可执行二进制文件都选择我们刚才正常编译的运行配置,调试器选择STM32CubeCLT提供的,面板配置文件选择按照自己的调试器进行配置。
例如我的是DAPLINK,芯片为STM32H743,创建一个xx.cfg文件后输入如下信息。

1
2
3
4
5
6
7
8
9
10
# 选择调试器类型(可选 st-link/j-link/dap-link 等)
adapter driver cmsis-dap
# 选择传输协议
transport select swd
# 设置目标芯片 Flash 大小(此处为 2M)
# set FLASH_SIZE 0x200000
# 引入目标芯片的配置文件(根据芯片型号选择)
source [find target/stm32h7x.cfg]
# 设置下载速度(单位 kHz,这里为 10MHz)
adapter speed 10000

点击应用后,运行配置文件,程序成功下载。

恭喜!现在你可以使用CLion进行愉快的编程了!

添加.c/.h文件

方法1:项目文件列表中,于想添加新文件的位置右键,选择新建->C/C++源文件,输入文件名后勾选关联头与添加到项目,Clion将自动的帮你创建对应文件并添加到MAKELIST中。


方法2:将已经存在的库文件复制进工程,编辑MAKELIST文件,如图。

Printf重定向

先添加库文件 #include <stdio.h>
注意,使用时printf时末尾必须带有”\r\n”。

1
2
3
4
5
int __io_putchar(int ch) {
HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, HAL_MAX_DELAY);
return ch;
}
//printf("Hello World\r\n");

配置MAKELIST

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 设置浮点运算模式(根据MCU选择)
# 对于没有硬件FPU的MCU使用soft
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mfloat-abi=soft")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mfloat-abi=soft")

# 对于有硬件FPU的MCU(如F4系列)使用
# set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mfloat-abi=hard -mfpu=fpv4-sp-d16")
# set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mfloat-abi=hard -mfpu=fpv4-sp-d16")

# 使能printf浮点数支持
target_link_options(${CMAKE_PROJECT_NAME} PRIVATE -u _printf_float)

# 可选:使能scanf浮点数支持
# target_link_options(${CMAKE_PROJECT_NAME} PRIVATE -u _scanf_float)

# 可选:使用nano库减小代码体积
# target_link_options(${CMAKE_PROJECT_NAME} PRIVATE
# --specs=nano.specs
# --specs=nosys.specs
# )

调试

开始调试后,主要窗口如图。线程和变量处能够看到当前位置变量的值,选中变量后右键,能够添加到监视,或者直接更变为指定的值,十分方便。

内存页面中可以直接输入内存地址查看数据.

GDB页面也可以直接进行GDB调试。

在外设页面中,添加SVD文件后能够选择监视指定外设寄存器的值。(.svd文件在CUBECLT根目录/STMicroelectronics_CMSIS_SVD/下寻找对应的即可)。

而且Clion的调试还对FREERTOS做了特化处理,在设置中开启即可。此处不再赘述。

  • 标题: Clion进行Stm32开发实操
  • 作者: Awwwwh2072
  • 创建于 : 2026-02-01 15:39:00
  • 更新于 : 2026-02-04 14:13:53
  • 链接: https://blog.2star.site/p202602011/
  • 版权声明: 版权所有 © Awwwwh2072,禁止转载。
评论