VSCode -PlatformIO简介及其基本操作
VSCode -PlatformIO简介及其基本操作
PlatformIO是一个开源的跨平台物联网(IoT)开发平台,支持多种硬件平台和开发框架,能够简化嵌入式开发流程,提高开发效率。本文将详细介绍PlatformIO在VSCode中的基本操作,帮助读者快速上手使用这个强大的开发工具。
1. 简介
PlatformIO是一个开源的跨平台的物联网(IoT)开发平台,用于嵌入式系统和物联网设备的开发。它提供了一个统一的开发环境和工具链,支持多种硬件平台(如Arduino、ESP8266、ESP32、Raspberry Pi等)和开发框架(如Arduino框架、ESP-IDF、STM32Cube等),使开发者可以更轻松地进行嵌入式开发。
PlatformIO的主要特点和优势包括:
- 跨平台支持:可以在Windows、Mac和Linux等操作系统上运行,并支持多种开发板和处理器架构。
- 统一的开发环境:提供了集成开发环境(IDE)插件,如VS Code、Clion等,使开发者可以在一个统一的界面中进行代码编辑、编译、调试和上传。
- 库管理和依赖管理:内置了强大的库管理器,可以方便地搜索、安装和更新开源库,同时支持管理项目的依赖关系。
- 丰富的功能:支持代码自动完成、语法检查、固件升级、调试器、单元测试等功能,提供了全面的开发工具和功能。
- 强大的扩展性:可以通过插件系统扩展功能,支持自定义构建脚本、添加新的开发板和框架等。
- 社区支持:PlatformIO拥有活跃的社区,开发者可以在社区中获取技术支持、交流经验和分享项目。
使用PlatformIO可以简化嵌入式开发的流程,提高开发效率,并使项目更易于管理和维护。无论是初学者还是有经验的嵌入式开发者,都可以受益于PlatformIO提供的功能和工具。
PlatformIO只是一个插件,因此,我们需要先选择一个IDE,在IDE中安装PlatformIO插件,这里推荐两种:VSCode与Clion。具体该怎么选择呢?
- 如果你是经验丰富的程序员或者重度依赖JetBrains系列开发工具,建议使用Clion;
- 如果你是初学者,且对C/C++语言的认识仅停留在学习阶段,没有实战经验或商业项目,建议选择VSCode,而且VSCode是免费的。
2. 基本操作
下载完毕后,PlatformIO只下载了公共的数据包,没有下载特定板子的数据包,因此如需使用他人的工程,需依照该工程所用芯片新建一个工程,在第一次新建工程时,PlatformIO会下载好该工程所需的文件。
假设需运行的工程所使用的芯片为ESP32,使用的框架为Arduino,那么在第一次运行该工程前需先按照如下步骤新建一次工程,只有第一次需要,后续就可以直接运行了。
点击VSCode左下角的桌面图标。
点击New Project,即可创建新项目
设置项目的名称,选择开发板型号,开发框架以及项目路径
点击Finish后,需要较长的一段时间,此阶段PlatformIO会下载该工程所需的文件,新建完成后,即可关闭此工程(直接关闭VSCode软件)。接着打开我们所需运行的工程即可(在工程路径下,鼠标右键后,选择通过Code打开)。
左下角的图标含义如图。
当使用PlatformIO创建ESP32 Arduino项目时,项目目录的结构通常如下所示
- .pio:该文件夹是PlatformIO的工作目录,包含编译生成的二进制文件、日志文件等。
- .vscode:如果你在VSCode中使用PlatformIO插件,该文件夹包含了与项目相关的配置文件,如任务配置、调试配置等。
- include:存放头文件。
- lib:该文件夹用于存放项目依赖的库文件。你可以通过PlatformIO的库管理器安装所需的库,并它们会自动下载到该文件夹。
- src:该文件夹是存放源代码的主目录。你的主要代码文件(通常是.cpp和.h文件)应放在这个目录下。
- test:用于存放项目的测试代码和测试数据。这个目录通常用于编写单元测试或集成测试的代码,用于验证项目的功能和逻辑是否正确。
- .gitignore:如果你使用版本控制系统如Git进行项目管理,你可以在这个文件中指定需要忽略的文件和文件夹。
- platformio.ini:这是PlatformIO的配置文件,用于指定项目的配置选项,如目标硬件平台、编译选项、上传设置等。
在PlatformIO创建的项目中,lib和include目录都是用于存放代码文件的特定目录。它们的区别如下:
- lib目录:用于存放项目的依赖库文件。在这个目录下,可以放置项目需要引用的第三方库或自己编写的库。这些库文件通常是以源代码的形式提供,可以是单个文件或多个文件的集合。在构建过程中,这些库文件会被编译并链接到项目中。
- include目录:用于存放项目的头文件。头文件包含了函数、类、变量的声明,供其他源文件在编译时引用。在这个目录下,可以放置项目自定义的头文件,或者是一些需要被其他文件引用的第三方库的头文件。在编译过程中,编译器会在该目录下查找所需的头文件。
总结一下,lib目录主要用于存放项目的依赖库文件,而include目录用于存放项目的头文件。这样的组织结构可以方便地管理项目所需的库文件和头文件,并在构建过程中正确引用和链接它们。
主要的代码,我们可以写在main.cpp中,src目录下的main.cpp文件基本等同于Arduino IDE中创建的.ino文件。
只不过,在main.cpp文件的第一行需要#include <Arduino.h>,其余的代码部分内容一致,我们可以直接把代码复制过来,但是不要忘了#include <Arduino.h>。
例如使用IIC驱动LCD1603液晶屏幕代码如下:
#include <Arduino.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2); // set the LCD address to 0x27 for a 16 chars and 2 line display
void setup()
{
lcd.init(); // initialize the lcd
lcd.backlight();
Serial.begin(9600);
}
void loop()
{
// when characters arrive over the serial port...
if (Serial.available())
{
// wait a bit for the entire message to arrive
delay(100);
// clear the screen
lcd.clear();
// read all the available characters
while (Serial.available() > 0)
{
// display each character to the LCD
lcd.write(Serial.read());
}
}
}
想要运行该程序,可以点击左下角的或者右上角的上传选项,或者使用快捷键ctrl + alt + u
这时候,我们还没有导入LiquidCrystal_I2C库,所以,代码会运行失败,想要在PlatformIO中导入第三方库比Arduino IDE方便的多,我们可以打开PlatformIO Home页面,点击libraries,输入我们想要导入的库名称,添加到项目中即可。
PlatformIO还会非常贴心的给你一个使用示例
所以,如果你想要使用ESP32在Arduino框架下实现一个稍微复杂一点的项目的话,Platform是最佳的选择。