当前位置: 首页 > backend >正文

CLion-2025 嵌入式开发调试环境详细搭建

0 前言

Keil功能很强大,但是界面和支持已经落后时代了。而Keil的debug体验仍没有更好的IDE可以替代,因此之前都是用VsCode+KeilAssistant编辑,用Keil编译下载和调试。

偶然的机会,发现CLion除了超棒的代码编辑外,还可以获得Keil般的Debug体验,而且CLion非商用是免费的,因此本文提供CLion的嵌入式开发调试环境搭建过程。

之前已经有很多大佬发过CLion的教程了,但是最新版本的CLion有了一些改变,因此写一篇帖子帮助最新使用的小伙伴们,也记录一下防止自己忘记。

  1. 终竟的花海——【嵌入式】CLion & CubeMX __推荐IDE
  2. StriverLite——【教程】手把手教你用Clion进行STM32开发【如何优雅の进行嵌入式开发】
  3. 稚晖——配置CLion用于STM32开发【优雅の嵌入式开发】

1 环境

1.1 软件环境

  1. Windows 11 24H2
  2. CLion 2025.1.1
  3. STM32CubeMX 6.14.1
  4. STM32CubeCLT 1.18.0
  5. gcc-arm-none-eabi-10.3-2021.10
  6. OpenOCD 20240916
  7. JLink V7.88

1.2 硬件环境

  1. STM32F407ZGT6 正点原子EXPLORER开发板
  2. JLink-V9

2 准备工作

2.1 安装CLion

下载传送门:CLion 2025.1.1
在这里插入图片描述

下载完成后正常安装就行,安装选项这里我一个都没有选,因为还不想创建文件关联。

在这里插入图片描述
创建一个文件夹,用于存放嵌入式开发需要用到的环境,我这边的目录是:
D:\CLion\Environment\STM32

在这里插入图片描述
CLion的安装到这里就完成了,暂时不用打开,先把其他的东西安装好。

2.2 安装STM32CubeMX

下载传送门:STM32CubeMX

正常安装即可,过程略。

注:新版本的CLion应该搭配新版本的STM32CubeMX使用,因为旧版本的STM32CubeMX不支持生成cmake。
在这里插入图片描述

2.3 安装STM32CubeCLT

下载传送门:STM32CubeCLT

在这里插入图片描述

下载完成后解压,会得到5个压缩包。

在这里插入图片描述

其中后缀为_x86_64的是我们需要的,将这个压缩文件解压,会得到安装exe文件。

正常安装即可,过程略。

2.4 准备编译工具链

下载传送门:GNU Arm Embedded Toolchain Downloads

在这里插入图片描述

把下载后的压缩包解压到上面创建的CLion环境目录下,即D:\CLion\Environment\STM32。解压后的目录结构如下:

在这里插入图片描述
将bin文件的目录加入到系统的环境变量中:
此电脑->右键进入属性->高级系统设置->高级->环境变量->系统变量->编辑Path->新建->确定->确定->确定

我这边的目录是:D:\CLion\Environment\STM32\gcc-arm-none-eabi-10.3-2021.10\bin

在这里插入图片描述
在这里插入图片描述
在cmd中输入:arm-none-eabi-gcc -v,看是否配置成功。

在这里插入图片描述

2.5 OpenOCD

下载传送门:OpenOCD
在这里插入图片描述
把下载后的压缩包解压到上面创建的CLion环境目录下,即D:\CLion\Environment\STM32。解压后的目录结构如下:
在这里插入图片描述

3 CLion配置

点击右下角齿轮,并选择settings。

在这里插入图片描述
在左侧选择Embedded Development,在右边配置三个目录。

  • OpenOCD Location: D:\CLion\Environment\STM32\OpenOCD-20240916-0.12.0\bin\openocd.exe
  • Stm32CubeMX Location:C:\Program Files\STMicroelectronics\STM32Cube\STM32CubeMX\STM32CubeMX.exe(换为你的STM32CubeMX的可执行文件路径)
  • Stm32CubeCLT Location:C:\ST\STM32CubeCLT_1.18.0(换为你的STM32CubeCLT路径)

配置好后点击OK退出。

在这里插入图片描述
在左侧选择工具链,修改C编译器和C++编译器目录,选择我们前面解压好的编译器文件夹中,bin目录下的arm-none-eabi-gcc.exearm-none-eabi-g++.exe

  • C编译器目录:D:\CLion\Environment\STM32\gcc-arm-none-eabi-10.3-2021.10\bin\arm-none-eabi-gcc.exe
  • C++编译器目录:D:\CLion\Environment\STM32\gcc-arm-none-eabi-10.3-2021.10\bin\arm-none-eabi-g++.exe

配置好后点击OK退出。

在这里插入图片描述

4 创建工程

首先需要用CubeMX创建一个新工程,可以直接打开CubeMX创建,也可以在CLion中打开CubeMX创建。

这里在CLion中打开CubeMX创建。
在这里插入图片描述
打开CubeMX后,选择ACCESS TO MCU SELECTOR,进入MCU选择器。

在这里插入图片描述

这里硬件使用的是正点原子STM32F407ZGT6 EXPLORER开发板,因此选择STM32F407ZGT6,然后Start。

在这里插入图片描述

这里创建一个简单的工程,让开发板上的两颗LED闪烁。
LED引脚为PF9和PF10,点击这两个引脚,配置为GPIO输出。

在这里插入图片描述
其余的均保持默认设置。

选择Project Manager,配置好名称、目录后,选择Toolchain为CMake,然后GENERATE CODE。
(再次提醒,低版本CubeMX该选项没有CMake)
过程中让安装什么库就安装什么库,根据指示操作即可。

在这里插入图片描述
CubeMX代码生成完毕,关闭CubeMX即可。

在这里插入图片描述
创建好的目录结构如下所示:

在这里插入图片描述

回到CLion,位置选择刚才创建的工程目录。该目录下应该有CMakeLists.txt。

在这里插入图片描述

我这里弹了个窗,先不管他,选择确定。

在这里插入图片描述

在main.c的主循环中,加入以下闪灯代码。

  while (1){/* USER CODE END WHILE */HAL_GPIO_WritePin(GPIOF, GPIO_PIN_9|GPIO_PIN_10, GPIO_PIN_RESET);HAL_Delay(500);HAL_GPIO_WritePin(GPIOF, GPIO_PIN_9|GPIO_PIN_10, GPIO_PIN_SET);HAL_Delay(500);/* USER CODE BEGIN 3 */}

点击右上角的锤子,编译。

在这里插入图片描述

5 JLink 下载 & 调试

在设置-高级设置中,搜索debug,勾选“启用调试服务器”,点击确定。

在这里插入图片描述

重新进入设置,依次点开构建、执行、部署->调试器->调试服务器,新建SEGGER J-Link。

在这里插入图片描述

修改可执行文件位置,我这里是C:\Program Files (x86)\SEGGER\JLink\JLinkGDBServerCL.exe
修改设备,选择STM32F407ZG,点击确定退出。

在这里插入图片描述

点击右上角的右箭头,把程序下载到MCU中。
点击下面的“服务”一栏,可以看到JLINK的Command输出。

在这里插入图片描述

下载完程序后,需要手动复位一下开发板,然后就能看到开发板闪灯了。

点击右上角的debug,进入调试模式。

在这里插入图片描述
在这里插入图片描述

6 其它

6.1 关于JLINK复位

在这里插入图片描述
现在下载完还要手动给板子复位(通过NRST引脚),目前看来重置设备中的monitor reset命令是无效的。

我尝试将这个命令改为JLink的复位命令r,有时候可以成功下载并复位,有时候就根本下不进去程序了。
因此在上面的流程里面没有动这里的设置。如果你遇到下载的问题,很有可能就是修改这里导致的。

因此后面还会研究一下原因和手段。

7 结语

本人也是刚接触CLion,经验尚且不足,如遇到问题请多参考大佬的文章。
欢迎大家随时评论区交流问题,一起进步!

http://www.xdnf.cn/news/8912.html

相关文章:

  • Mysql 中的锁
  • 2025京麒CTF挑战赛 计算器 WriteUP
  • 2024 CKA模拟系统制作 | Step-By-Step | 5、题目搭建-查看Pod CPU资源使用量
  • 滑动窗口算法:高效处理数组与字符串子序列问题的利器
  • (九)PMSM驱动控制学习---无感控制之高阶滑膜观测器
  • 61580 RT控制
  • SCI与EI期刊分区及影响因子汇总
  • 超越UniAD!百度哈工大X-Driver:基于视觉语言模型的可解释自动驾驶
  • 多线程的基础知识以及应用
  • 校园二手交易系统
  • AI预测3D新模型百十个定位预测+胆码预测+去和尾2025年5月25日第88弹
  • 法律大模型之阿里云通义法睿
  • DataX的json配置文件,{},[]讲解
  • 华硕FL8000U加装16G+32G=48G内存条
  • 英语六级-阅读篇
  • 分布式缓存:BASE理论实践指南
  • YOLOv1到YOLOv12各版本发展2025.5.25
  • Jetpack Compose 导航 (Navigation)
  • mysql 导入导出数据
  • Cache写策略
  • 【深度学习】1. 感知器,MLP, 梯度下降,激活函数,反向传播,链式法则
  • Unity3D 彩色打印
  • 【基础工程搭建】Load Bus Error异常问题分析
  • 双深度Q网络(Double DQN)基础解析与python实例:训练稳定倒立摆
  • 2021年认证杯SPSSPRO杯数学建模A题(第二阶段)医学图像的配准全过程文档及程序
  • SpringCloud实战:Seata分布式事务整合指南
  • 模型实战(28)之 yolov5分类模型 训练自己的数据集
  • LeetCode 1040.移动石子直到连续II
  • PowerDesigner 安装+汉化+破解
  • RAG赋能图像知识库,让AI读懂每一帧画面