用 PlatformIO + ESP-IDF 框架开发 ESP32
用 PlatformIO + ESP-IDF 框架 开发 ESP32,是一个现代化、高效的方案。
🚀 PlatformIO + ESP-IDF 开发流程
1️⃣ 安装 PlatformIO
👉 推荐用 VSCode + PlatformIO 插件
- 下载 VSCode: https://code.visualstudio.com/
- 安装 PlatformIO 插件(在 VSCode Extensions 里搜索
platformio-ide
)
2️⃣ 创建 ESP-IDF 项目
在 VSCode → PlatformIO: Home → New Project
- Project name:
esp32_idf_demo
- Board: 选
Espressif ESP32 Dev Module
- Framework:
ESP-IDF
点击 Finish,PlatformIO 会自动生成工程结构,并下载 ESP-IDF SDK。
3️⃣ 工程目录结构
生成的目录大概是:
esp32_idf_demo/├── include/ # 头文件├── lib/ # 静态库或自定义库├── src/ # 源文件 (main.c / main.cpp)├── platformio.ini # 配置文件└── test/ # 单元测试代码
4️⃣ 编辑 src/main.c
示例代码
这里是一个基础 ESP-IDF 风格的闪烁 LED 示例:
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "driver/gpio.h"
#include "esp_log.h"#define LED_PIN GPIO_NUM_2 // 一般开发板内置LED接在GPIO2void app_main(void)
{gpio_config_t io_conf = {.pin_bit_mask = (1ULL << LED_PIN),.mode = GPIO_MODE_OUTPUT,.pull_up_en = 0,.pull_down_en = 0,.intr_type = GPIO_INTR_DISABLE};gpio_config(&io_conf);gpio_set_direction(LED_PIN, GPIO_MODE_OUTPUT);while (1) {gpio_set_level(LED_PIN, 1);ESP_LOGI("BLINK", "LED ON");vTaskDelay(500 / portTICK_PERIOD_MS);gpio_set_level(LED_PIN, 0);ESP_LOGI("BLINK", "LED OFF");vTaskDelay(500 / portTICK_PERIOD_MS);}
}
5️⃣ platformio.ini
文件自动生成,一般如下:
[env:esp32dev]
platform = espressif32
board = esp32dev
framework = espidfupload_speed = 460800
monitor_speed = 115200
👉 可以在这里自定义:
- 烧录速度
upload_speed
- 分区表
- CMake 参数等
6️⃣ 编译、烧录、串口监视
在 VSCode 底部状态栏或 Terminal:
pio run # 编译
pio run -t upload # 编译 + 烧录
pio device monitor # 串口监视器
或者点击左下角的 PlatformIO
按钮选择操作。
🌟 常用 PlatformIO 命令
命令 | 功能 |
---|---|
pio run | 编译工程 |
pio run -t upload | 编译并烧录 |
pio device monitor | 打开串口监视器 |
pio run -t clean | 清理构建文件 |
pio check | 静态代码分析 |
📝 提示
✅ 串口监视速率:注意和开发板默认一致(一般 115200 或 921600)
✅ 驱动程序:Windows 用户确保 USB-UART 驱动已安装(CP2102 / CH340)
✅ ESP-IDF API 文档: https://docs.espressif.com/projects/esp-idf/en/latest/
💡 进阶
⚡ 配置 WiFi、蓝牙、HTTP、MQTT 等代码示例
⚡ 自定义分区表、SPIFFS、NVS 存储
⚡ 配置 CMakeLists.txt 的高级用法
⚡ 同时支持 Arduino + ESP-IDF 混合框架