前言
作者在长期使用 Clion 稳定开发之前也尝试使用过 Keil、Arduino IED 和 VS Code 作为主力 IDE,综合体验下来 CLion 的便利性和专业性胜出一筹,直到近期一直没看到较高质量的 CLion嵌入式开发 教程,所以萌生了写此篇教程的念头,希望内容去繁求简且不失细节,能够让完全没有基础的朋友快速上手,以 ESP32 和 ESP32-S3 为例介绍安装配置流程和常用基础操作,本教程并不否定其他开发路径,只希望以此篇教程给广大朋友们带来一个新的代码开发选择,本文所介绍的步骤不局限于 ESP32系列 的开发,也可以部分适用于 STM32系列 或其他系列芯片的开发,后面有时间也会更新 STM32 系列的 CLion 开发系列教程。
一、开发平台
1. 为什么选择Clion
JetBrains 的 IDE 以其出色的体验著称,CLion 作为其旗下的 C/C++跨平台IDE,继承了家族一致的现代化设计,并为嵌入式开发提供了深度支持。选择 CLion 还有一个重要理由:自 2025 年 1.1 版本起,JetBrains 宣布其非商业用途永久免费。这使 CLion 社区迅速活跃,且免费版几乎具备全部商业功能(仅 Code With Me 协作功能有所降级),为个人开发者提供了强大而免费的开发环境。

优点:
- 开箱即用的C++工具链,自动配置 CMake,无需手动设置编译环境,新手也能快速上手,大幅节省项目搭建时间。
- 无与伦比的现代化界面,风格与 PyCharm、IntelliJ IDEA 等 JetBrains IDE 保持一致,切换语言无需重新适应,降低学习成本。
- 能够处理大型复杂项目,可高效处理数百万行代码的大型项目,支持多模块、多目标并行编译,提升团队协作效率。
- 更智能的代码辅助功能,具备深度语境感知的代码补全、即时代码分析、重构建议与精准导航,显著提升编码质量与速度。
- 深度集成嵌入式开发环境,无缝集成 PlatformIO,通过插件即可在原生界面中创建、管理与运行项目,接近“无感”开发体验。
缺点:
- 较高的内存性能开销,基于 IntelliJ 平台,智能化功能依赖较多内存与 SSD,启动及索引速度相对较慢。
- 自定义程度受限,相比 VS Code 等编辑器,CLion 在界面自定义和构建流程定制方面较为受限,标准化程度较高。
2. PlatformIO是什么
PlatformIO 是跨平台的物联网开发框架,集成了构建系统、库管理和调试工具,极大简化了嵌入式开发流程。针对 ESP32,它支持 Arduino 和 IDF 两种开发方式,提供完整的工具链、丰富的库支持以及一键烧录与监控功能。

通过官方插件,PlatformIO 与 CLion 深度集成,将强大的 IDE 功能(如智能代码补全、一键编译烧录调试)引入 ESP32 项目开发中,实现了高效项目管理和舒适编码体验。这种组合让开发者能在专业IDE环境中便捷地进行 ESP32 应用的开发、构建和部署。
二、软硬件资源准备
1. 硬件资源准备
- ESP32开发板(左边所示,用于基础演示)
- ESP32-S3开发板(右边所示,非必须可选择跳过)
- 一根USB数据线(Type-C 或 Micro USB 根据你的开发板选择)

2. 软件资源准备
资源整理上传到了百度网盘,方便大家下载:
如果链接失效,可以通过评论区或私信告知
授人以鱼不如授人以渔,可能日后更新的软件资源的自行获取方式如下,感兴趣的朋友可以收藏:
- CLion安装:https://www.jetbrains.com/clion/
- PlatformIO安装:https://docs.platformio.org/en/latest/core/installation/index.html
- Python安装:https://www.python.org/downloads/windows/
- MinGW安装:https://www.mingw-w64.org/downloads/
(不需要更新的资源在百度网盘直接一次性获取即可)
三、安装配置过程
安装过程非常简单,可以大致分为以下3步,网盘也按照每步需要用到的软件资源进行了资源分类(其中有一些资源并不是必须)

第1步 安装配置环境
- CLion 2025.2.6.exe:CLion 代码编辑器安装包(不建议用最新版本,考虑 PlatformIO 适配更新)
- get-platformio.py:PlatformIO 安装脚本,可用 Python 运行安装(不需要会 Python)
- MinGW GCC环境.zip:C/C++ 编译器环境,一般系统自带无需安装(用不着可忽略,有备无患)
- python-3.11.9-amd64.exe:Python 解释器安装程序(用来运行 PlatformIO 安装脚本)

1.1 CLion安装
- 可以选择自定义安装目录(建议)也可以就用默认C盘路径安装

1.2 导入配置
- 界面中有两个选项可以将你其他的 JetBrains 系列 IDE 如 Pycharm、IntelliJ IDEA 的配置拷贝导入或将 VS Code 的配置的导入到 CLion 中使用。我们在教程可以选择 Skip Import 直接跳过,新建一个配置。

1.3 切换中文(可选)
- 点击确认后会跳出重启询问弹窗,需要重启IDE以完成切换语言

1.4 安装PlatformIO插件
- 安装完成后需要重启IDE以完成插件安装,安装如遇到问题有条件可以尝试科学上网

1.5 安装Python
- 由于本教程不是Python教程,不详细介绍每个安装选项的意义

- 安装完成后可以在控制台输入 python 命令测试,如若回车输出以下内容则安装成功

如果输出失败或命令无效,则大概率是环境变量配置问题(第一步没有勾选),将 Python 安装目录中 python.exe 所在根目录和根目录下的 Scripts 目录放到高级系统设置的 Path 环境变量中即可解决
1.6 安装PlatformIO
- 在 get-platformio.py 文件所在目录输入 cmd 命令后回车打开控制台

- 输入 python get-platformio.py 命令回车运行安装脚本

- 如果安装遇到问题(超过10分钟还在等待)可以尝试输入以下命令设置镜像源
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
第2步 放置组件包(可选但建议)
组件就是开发特定芯片由平台自动下载的编译支持套件,本来应该由CLion在创建工程时自动下载完成,但是由于国内网络众所周知的原因,最好是自己手动完成(科学上网和代理设置也解决不了),如果你有耐心等待10个小时左右,也可以由 CLion 自动完成(不用怀疑你网没卡,下载就是这么慢),以后如果有新的芯片系列的开发需求如 STM32 系列,可以直接新建工程等待平台软件自动下载,完成后留存一份方便移植到其他设备
- PlatformIO ESP32 Arduino.zip:ESP32 Arduino 开发框架组件
- PlatformIO ESP32 Toolchain.zip:ESP32 编译工具链组件
- PlatformIO ESP32-S3 Toolchain.zip:ESP32-S3 编译工具链组件
- PlatformIO RISCV32-ESP Toolchain.zip:RISC-V架构 ESP 编译工具链组件

2.1 创建packages文件夹
- 在 C:\Users\用户名\.platformio\ 目录创建packages文件夹,也可以在新建了一次platformio工程后自动由系统创建,我们提前手动创建的目的是为了先往里面放组件

2.2 解压缩组件到文件夹
- 用于开发ESP32时避免长时间下载等待,而预先将这两个主要组件放进packages中

- 如果还需开发ESP32-S3,将下面两个组件也放进去(强烈建议不开发也可以先顺手放进去有备无患)

第3步 安装串口驱动
根据自己开发板上的串口转换芯片来选择对应的驱动程序,如果不确定可以全都安装,如果不是以下三种之一可以根据芯片上的水印自行搜索或找厂家索要相关驱动安装包进行安装,ESP32-S3 支持 USB-OTG 方式烧录程序,无需经过串口转换芯片。
- CH340驱动.zip:CH340串口驱动安装包
- CH343驱动.zip:CH343串口驱动安装包
- CP210X驱动.zip:CP210X串口驱动安装包

(由于串口驱动安装过于简单,仅需解压出来后直接点击一键安装,所以为节省篇幅不予演示)
四、创建工程
1. 新建项目
- ESP32 和 ESP32-S3 在第5步选项略有不同,然后根据自己的开发需要选择 Arduino 或 IDF 框架,本教程演示为 Arduino 框架

- 第一次创建某一芯片的项目会需要等待一段时间,会由平台自动下载所需组件(为避免长时间等待,我们此前已经手动载入了组件)

2. 项目结构
- include目录,用于存放项目头文件(.h/.hpp 等)
- src目录,用于存放项目的主要源代码文件(.c/.cpp 等),头文件也可以放里面(但是复杂工程不推荐)
- lib目录,用于存放项目专用的库文件(下篇文章会用第三方库专篇详细讲解)
- test目录,用于存放项目的测试代码
- .pio目录,作为PlatformIO内部工作目录,自动生成编译构造,无需过多关注

3. ESP32简单打印测试
3.1 硬件连接
- 通过 USB 线将 ESP32 开发板连接到电脑(确保 USB 线具备数据传输能力)

- 通过 Windows+X快捷键 菜单或手动搜索打开设备管理器,查看 ESP32 串口号,如果没有正确安装驱动,则此处不会显示串口号或反复闪屏。

3.2 配置platformio.ini
- upload_port,上传端口参数,用于指定烧录程序所连接的串口号(上文中已查看)
- monitor_port,串口监视器端口参数,用于指定串口监视所连接的串口号(一般同烧录串口即可)
- monitor_speed,串口监视器波特率参数,一般设置为115200足够使用

3.3 构造项目
测试输出代码如下
#include <Arduino.h>
void setup() {
Serial.begin(115200); // 设置串口波特率
Serial.println("Hello ESP32 By CLion!"); // 输出测试
}
void loop() {
}

3.4 下载烧录

3.5 串口监视

4. 设置一键下载监视按钮(重要)
- 我们可以看到以上程序的下载调试过程仍然十分麻烦,通过以下步骤进行一键下载监视按钮设置,可以在符合 CLion 原生 UI 风格的基础上更方便快捷的进行程序下载调试,只需要一键就可以编译、下载并进入串口调试。






- 设置完成后一键下载监视按钮效果测试如下所见,自动编译下载后直接进入了串口调试:

5. ESP32-S3串口打印测试
5.1 硬件连接
- 通过 USB 线将 ESP32-S3 开发板串口 Type-C 接口连接到电脑(确保 USB 线具备数据传输能力)

- 通过 Windows+X快捷键 菜单或手动搜索打开设备管理器,查看 ESP32-S3 串口号,如果没有正确安装驱动,则此处不会显示串口号或反复闪屏。

5.2 配置platformio.ini
- upload_port,上传端口参数,用于指定烧录程序所连接的串口号(上文中已查看)
- monitor_port,串口监视器端口参数,用于指定串口监视所连接的串口号(一般同烧录串口即可)
- monitor_speed,串口监视器波特率参数,一般设置为115200足够使用

5.3 编写代码并一键下载烧录
测试输出代码如下
#include <Arduino.h>
void setup() {
Serial.begin(115200); // 设置串口波特率
Serial.println("Hello ESP32-S3 By CLion!"); // 输出测试
}
void loop() {
}

6. ESP32-S3 USB打印测试
6.1 硬件连接
- 通过 USB 线将 ESP32-S3 开发板串口 USB-OTG 接口连接到电脑(确保 USB 线具备数据传输能力)

- 通过 Windows+X快捷键 菜单或手动搜索打开设备管理器,确保 ESP32-S3 开发板已连接,无需记住串口号,通过 USB 方式串口号可以自动配置,如果没有正确安装驱动,则此处不会显示串口号或反复闪屏。

6.2 配置platformio.ini
- -DARDUINO_USB_CDC_ON_BOOT,USB虚拟串口启停参数,设置为1启用虚拟串口
- -DCORE_DEBUG_LEVEL,核心日志打印等级限制参数,设置为1仅打印错误信息以便于查看

6.3 编写代码并一键下载烧录
测试输出代码如下,特别说明:ESP32-S3 通过 USB 调试时,如果需要在启动时通过虚拟串口输出信息,建议延迟1-5秒左右,因为需要留给 CLion串口调试器 重新连接的时间,如果不设置延迟,会导致按下 RESET 按钮后输出信息无法打印到控制台,可以放心的是这并不是什么 BUG,而是使用 USB 调试方式的特性,因为串口方式在重启芯片时并不会重启串口转换芯片,如 CH340、CH343 等芯片都是处于始终使能状态,所以不需要重新连接,而 USB 因跟随芯片启动所以会受到芯片重启影响
#include <Arduino.h>
void setup() {
Serial.begin(115200); // 设置串口波特率
delay(1000); // 延迟1秒
Serial.println("Hello ESP32-S3 By USB!"); // 输出测试
}
void loop() {
}

五、第三方库
PlatformIO 拥有庞大的第三方库生态系统,在 CLion 上可以很方便的按照以下步骤导入这些库(在下一篇文章中会用专篇详解以 OneButton 库为示例的实战使用,以及如何自定义一个库并放到 lib 目录中使用,本文不过多进行赘述)。
- 启动 PlatformIO Home,正常情况下会自动跳出网页,如果没有跳出可以根据下方链接访问

- 在 Libraries 页面搜索所需库库名,本文示例为 OneButton 库

- 进入第三方库安装页面,并复制第一个依赖名(^ 表示兼容版本,~ 表示允许小版本更新,什么符号都不加表示精确版本)

- 将第三方库依赖名粘贴到配置文件中的 lib_deps 参数,如有更多库换行即可,然后重载配置

- 可以看见,主程序中已经可以导入刚才安装的第三方库正常进行使用了

总结
本教程介绍了如何使用 CLion 进行 ESP32 和 ESP32-S3 的开发,编辑器安装配置、组件放置、PlatformIO 框架环境搭建、驱动安装和自定义工具栏带来的开发效率提升,并给出了 Arduino 代码示例,重点是理解每个参数和配置的意义。未来预计会逐步开坑第三方库的详细使用教程、自定义库的开发方法、C++ 方式开发 Arduino 框架示例和 STM32系列 的 CLion 开发教程。
教程如若发现纰漏,欢迎私信或留言批评指正,感谢朋友们的阅读和支持,感谢大家多点赞收藏评论。
1076

被折叠的 条评论
为什么被折叠?



