ESP-IDF 开发
本章节包含以下内容,请按需阅读:
ESP-IDF 入门教程
初次接触 ESP32 ESP-IDF 开发,想要快速上手?我们为您准备了一套通用的 入门教程。
- 第0节 认识 ESP32
- 第1节 搭建环境
- 第2节 运行实例
- 第3节 创建项目
- 第4节 使用组件
- 第5节 调试程序
- 第6节 FreeRTOS
- 第7节 驱动外设
- 第8节 Wi-Fi 编程
- 第9节 BLE 编程
请注意:该教程使用 ESP32-S3-Zero 作为教学示例,所有硬件代码均基于其引脚布局。在动手实践前,建议您对照手中的开发板引脚图,确认引脚配置无误。
配置开发环境
以下教程基于 Windows 开发环境,使用 VS Code 进行开发。
ESP-IDF 从 v5.1 开始支持 ESP32-H2。安装 ESP-IDF 时请选择 v5.1 或更高版本。
请参考 微雪 ESP-IDF 入门教程 - 第 1 节 搭建环境 完成 ESP-IDF 开发环境配置。
运行乐鑫官方示例程序
请参考 微雪 ESP-IDF 入门教程 - 第 2 节 运行示例。
固件烧录、Flash 擦除及下载模式操作请参阅 Flash 固件的烧录与擦除。
示例程序
ESP-IDF 示例程序位于产品示例程序包的 ESP-IDF 目录中。
| 示例程序 | 基础例程说明 |
|---|---|
| 01_Hello_World | 打印 Hello World |
| 02_BlinkRGB | RGB 灯呼吸效果闪烁变色 |
| 03_GetChipID | 读取芯片 ID |
| 04_BLE | 手机蓝牙调试助手可搜索到 ESP32 设备,广播数据为 ESP32-H2 |
| 05_ieee802154_cli | 提供命令行,测试 IEEE 802.15.4 |
| 06_Zigbee | 两台设备分别作为 switch 和 light 进行 Zigbee 通信 |
| 07_UART | 短接 GPIO23/24 实现串口数据打印 |
| 08_1.83inch | 连接 1.83inch LCD Module 屏幕实现颜色循环测试、触摸功能测试和lvgl图形库显示 |
01_Hello_World
本示例演示 ESP32-H2-Zero 最基本的串口输出功能,程序启动后每十秒通过串口打印 Hello World!
硬件连接
使用 USB 线将开发板连接到电脑。
软件操作
- 该示例兼容 ESP32-C6,无需修改示例代码。
- 在 ESP-IDF 扩展中选择 ESP32-H2 目标芯片及开发板对应的串口,然后编译、烧录并打开串口监视器。串口号可在 Windows 设备管理器中查看。
运行效果

02_BlinkRGB
本示例演示板载 RGB 灯的呼吸效果,RGB 灯会闪烁并循环变色。
运行效果


03_GetChipID
本示例实现获取并打印 ESP32-H2 芯片的硬件信息,包括芯片型号、版本、核心数量以及芯片 ID。
运行效果

04_BLE
本示例将开发板设置为 BLE 广播,广播数据为 ESP32-H2,在手机蓝牙调试助手中可以搜索到设备。
参数配置
首先打开一个 ESP-IDF 终端
输入 idf.py menuconfig 进入到配置界面,然后跟随图片中选中的选项操作:
进入 Component config → Bluetooth,启用 Bluetooth,并将 Host 配置为 BLE 支持模式。
ESP32-H2 仅支持 Bluetooth LE,不支持经典蓝牙。请勿选择 Bluedroid - Dual-mode。Host 及控制器选项应以当前 ESP-IDF 版本中 ESP32-H2 可用的 BLE 配置为准。




运行效果

05_ieee802154_cli
本示例提供 IEEE 802.15.4 命令行,可通过串口终端输入命令进行收发和参数测试。
| 命令 | 功能 |
|---|---|
channel -g / -s <n> | 获取/设置信道号 |
rx -r <0|1> | 开启/关闭接收模式 |
tx <bytes> / tx -l <len> | 发送 MAC 帧 |
txpower -g / -s <n> | 获取/设置发射功率 |
panid <id> / panid -g | 设置/获取 PAN ID |
shortaddr <addr> / -g | 设置/获取短地址 |
extaddr <addr> / -g | 设置/获取扩展地址 |
promisc -e / -d / -g | 开启/关闭/查询混杂模式 |
coordinator -e / -d / -g | 开启/关闭/查询协调器模式 |
cca -g / -m <mode> / -v <val> | 获取/设置 CCA 模式和阈值 |
ed -d <duration> | 能量检测 |
pending | 管理 pending 地址表 |
reg -r / -w | 读写寄存器 |
esp154 -e / -d | 初始化/去初始化 802.15.4 子系统 |
restart | 软件复位 |
free / heap | 查看堆内存 |
help | 查看所有命令帮助 |
参数配置
该示例默认将 UART0 作为控制台输出,但开发板的 Type-C 接口在烧录时会同时占用该端口,导致冲突。建议在 ESP-IDF 终端中重新配置控制台输出通道。
首先打开 ESP-IDF 终端。
输入 idf.py menuconfig 进入配置界面,然后按下列路径操作:
Component config → ESP System Settings → Channel for console output



将控制台输出通道从 UART0 改为 USB Serial/JTAG Controller。

运行效果

06_Zigbee
本示例演示 Zigbee 通信,需要两台设备,一台作为 switch,一台作为 light。
该示例需要两块 ESP32-H2 开发板。烧录 HA_on_off_switch 的开发板通过 BOOT 按键控制另一块开发板上的 RGB LED。
先向一块开发板烧录 HA_on_off_switch,再向另一块开发板烧录 HA_on_off_light。
参数配置
首先打开一个 ESP-IDF 终端
输入 idf.py menuconfig 进入到配置界面,然后跟随图片中选中的选项操作:
Component config → Zigbee → Configure the Zigbee device type



将准备烧录 switch 示例的开发板配置为 Zigbee Coordinator or Router device。

将准备烧录 light 示例的开发板配置为 Zigbee End device。

运行效果
在烧录 switch 示例的开发板上按下 BOOT 键,可控制 light 开发板的 RGB LED 亮灭。
-
light:

-
switch:

07_UART
本示例演示 UART 自发自收。使用跳线短接 GPIO23 与 GPIO24 后运行示例。

运行效果

08_1.83inch
本示例演示了如何基于 ESP32-H2 开发板驱动 1.83inch Touch LCD Module 触控液晶模组,既实现了颜色循环测试与触摸功能测试,又预留了基于 LVGL 图形库的图片显示能力,支持通过左滑、右滑手势完成图片切换操作。
硬件连接
| 1.83inch Touch LCD Module | ESP32-H2-Zero |
|---|---|
| VCC | 3V3 |
| GND | GND |
| LCD_DIN | GPIO2 |
| LCD_CLK | GPIO1 |
| LCD_CS | GPIO5 |
| LCD_DC | GPIO3 |
| LCD_RST | GPIO4 |
| LCD_BL | GPIO24 |
| TP_SDA | GPIO25 |
| TP_SCL | GPIO22 |
| TP_RST | GPIO10 |
| TP_INT | GPIO11 |
运行效果
修改项目 main.c 中的 DEMO_IMAGE_ALBUM 宏可切换两种演示模式:
-
当
#define DEMO_IMAGE_ALBUM 0时:-
LCD 颜色循环测试:




-
LCD 触摸测试:

-
-
当
#define DEMO_IMAGE_ALBUM 1时:-
LVGL 图片切换测试:



-
文档反馈
如在使用过程中遇到问题,欢迎留言反馈。