Clion配置PlatformIO新手速通版
本教程基于macOS系统讲解如在其他操作系统安装出现问题请参考官方文档https://docs.platformio.org/en/latest/core/installation/index.html环境要求操作系统Windows, macOS, Linux, FreeBSD, Linux ARMv6Python环境3.6版本安装方式有多种这里讲解的是使用脚本安装。1.安装PlatformIO Core1.1下载安装脚本运行以下命令curl -fsSL -o get-platformio.py https://raw.githubusercontent.com/platformio/platformio-core-installer/master/get-platformio.py或wget -O get-platformio.py https://raw.githubusercontent.com/platformio/platformio-core-installer/master/get-platformio.py将 get-platformio.py下载到本地。1.2. 运行脚本安装1.2.1 确认python版本运行python --version1.2.2 开始安装运行python get-platformio.py通过输出可以看到它会创建一个虚拟环境/Users/username/.platformio/penv因此不用担心会污染现有的环境。等待程序运行完成看到PlatformIO Core has been successfully说明安装成功。1.3. 配置环境变量如果你想直接通过命令行之类的运行相关命令需要将/Users/username/.platformio/penv/bin其配置到环境变量中。这里不做过多讲解。下面是其目录列表。如果想要临时在命令行中使用可以直接运行里面的activate来激活环境比如我这里source /Users/username/.platformio/penv/bin/activate,可以看到前方出现penv,再运行pio就可以输出帮助信息了。2.直接上手Clion开发ESP32项目。打开Clion 点击New project创建一个新项目。在左侧面板找到PlatformIO右侧面板就会自动出现 可选的开发板。我们往下滑 找到Espressif,展开后会看到下面列出了许多系列的开发板。我们根据自己开发板的类型选择对应的即可。还可以选择使用 arduino开发还是 espidf开发。选择完成后点击Create,等待后台任务完成即可。想要查看进度可以点击左下角的锤子按钮接下来就是耐心等待。通过目录结构可以看到跟ESP-IDF插件生成的还是有点差别的。不过配置起来非常棒棒的对新手很友好。写完了项目如何使用呢直接点击右侧面板的蚂蚁头图标出现了各种选项跟ESP-IDF插件不同的是这里的flash变成了upload写在最后这里有个坑啊就是我们使用插件自动生成文件有点问题不符合官方的配置的。当我们直接 Build时会出现下面的错误/Users/tbh/.platformio/packages/toolchain-xtensa-esp-elf/bin/../lib/gcc/xtensa-esp-elf/15.2.0/../../../../xtensa-esp-elf/bin/ld: .pio/build/esp32dev/esp-idf/freertos/libfreertos.a(app_startup.c.o):(.literal.main_task0x24): undefined reference to app_main /Users/tbh/.platformio/packages/toolchain-xtensa-esp-elf/bin/../lib/gcc/xtensa-esp-elf/15.2.0/../../../../xtensa-esp-elf/bin/ld: .pio/build/esp32dev/esp-idf/freertos/libfreertos.a(app_startup.c.o): in function main_task: /Users/tbh/.platformio/packages/framework-espidf/components/freertos/app_startup.c:190:(.text.main_task0x92): undefined reference to app_main collect2: error: ld returned 1 exit status *** [.pio/build/esp32dev/firmware.elf] Error 1 [FAILED] Took 66.31 seconds 我们通过它的目录结构也可以发现这里的main文件夹变成了src, main.c文件中的入口函数变为了 main。接下来我们就需要手动改一下将main.c文件中的main函数改为 app_main即可成功编译。