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 开发环境,使用 VSCode 进行开发。
注意:ESP-IDF 从 V5.1 版本后才开始支持 ESP32-C6。安装 ESP-IDF 时需选择 V5.1 以上版本。
请参考 微雪 ESP-IDF 入门教程 - 第 1 节 搭建环境 完成 ESP-IDF 开发环境配置。
运行乐鑫官方示例程序
官方例程使用教程
创建例程( 示例 )
-
使用快捷键 F1 ,输入
esp-idf:show examples projects
-
选择你当前的 IDF 版本

-
以 Hello world 例程为例
- ① 选择对应例程
- ② 其 readme 会说明该例程适用于什么芯片(下文有介绍例程怎么使用与文件结构,这里略)
- ③ 点击创建例程

选择放置例程的路径,要求无例程同名文件夹

修改 COM 口
-
此处显示使用对应的 COM 口,点击可以修改对应 COM 口
-
请根据设备对应 COM 口进行选择,建议优先使用 USB 对应的 COM 口(可通过设备管理器查看)
-
若出现下载失败的情况请点击复位按键 1 秒以上,等待 PC 端重新识别到设备后再次下载

-
选择使用的工程或者例程

-
然后我们的 COM 口就修改好了
修改驱动对象
-
此处显示的是使用的驱动对象,点击可以修改对应驱动对象
-
选择使用的工程或者例程

-
点击后需要稍等片刻

-
选择我们需要驱动的对象,也就是我们的主芯片为 ESP32C6

-
选择 openocd 的路径,这里对我们没有影响,所以我们随便选择一个即可

其余状态栏简介
- ①SDK 配置编辑器,ESP-IDF 很多功能与配置可以在其内修改
- ② 全部清理,清空所有编译文件,
- ③ 编译
- ④ 当前下载方式,默认为 UART
- ⑤ 烧录当前固件,请在编译后进行
- ⑥ 打开串口监视器,用于查看串口信息
- ⑦ 编译,烧录,打开串口监视器 一体按键(调试时最常用)

编译、烧录、串口监视
-
点击我们之前介绍的 编译,烧录,打开串口监视器按键

-
编译可能需要较长时间才能完成,尤其是在第一次编译时。

-
在此过程中,ESP-IDF 可能会占用大量 CPU 资源,因此可能会导致系统卡顿。
-
若是新工程首次烧录程序,将需要选择下载方式,选择 UART

-
后续也可在 下载方式 处进行修改(点击即可弹出选项)

-
因为板载自动下载电路,无需手动操作即可自动下载

-
下载成功后,自动进入串口监视器,可以看到芯片输出对应的信息并提示 10S 后重启

示例演示
Hello Word
官方示例路径:get-started -> hello_world
示例效果:在 TERMINAL 窗口以 10 秒间隔输出 Hello world!
软件操作
- 根据上方教程创建官方示例 hello_world ( 创建示例 )
- 程序兼容 ESP32-C6,无需修改程序内容即可使用
- 修改好 COM 口及驱动对象 (建议优先使用 USB 对应的 COM 口,可通过设备管理器查看) ,点击编译并烧录即可运行程序

RGB
官方示例路径:get-started -> blink
示例效果:板载 RGB 灯珠以 1 秒间隔进行闪烁
软件操作
- 根据上方教程创建官方示例 blink ( 创建示例 )
- 程序兼容 ESP32-C6,无需修改程序内容即可使用
- 修改好 COM 口及驱动对象 (建议优先使用 USB 对应的 COM 口,可通过设备管理器查看) ,点击编译并烧录即可运行程序

UART
官方示例路径:peripherals -> uart-> uart_async_rxtxtasks
示例效果:短接 GPIO4 与 GPIO5 情况下进行 UART 的数据自收发
硬件连接
| ESP32-C6 | ESP32-C6(同一块) |
|---|---|
| GPIO4 | GPIO5 |
软件操作
- 根据上方教程创建官方示例 uart_async_rxtxtasks( 创建示例 )
- 程序兼容 ESP32-C6,无需修改程序内容即可使用
- 修改好 COM 口及驱动对象 (建议优先使用 USB 对应的 COM 口,可通过设备管理器查看) ,点击编译并烧录即可运行程序

-
根据使用的 GPIO 进行硬件连接

-
可转到定义文件中查看实际使用的 GPIO(选中 GPIO_NUM_4 -> 右键 -> Go to Definition )

Bluetooth
官方示例路径:bluetooth -> bluedroid -> ble -> gatt_server
示例效果:ESP32-C6 与手机端蓝牙调试助手进行数据传输
软件操作
- 在手机端安装 蓝牙调试助手
- 根据上方教程创建官方示例 gatt_server( 创建示例 )
- 程序兼容 ESP32-C6,无需修改程序内容即可使用
- 蓝牙名称以及 UUID,蓝牙名称为 ESP_GATTS_DEMO

-
修改好 COM 口及驱动对象 (建议优先使用 USB 对应的 COM 口,可通过设备管理器查看) ,点击编译并烧录即可运行程序

-
在手机端连接 ESP_GATTS_DEMO 蓝牙设备

-
连接成功效果如下

-
根据程序中 UUID 的值可知为下方两个服务器,选择其中一个进行上行发送

-
ESP32-C6 接收到数据

WIFI
官方示例路径:wifi-> getting_started-> station 示例效果:ESP32-C6 连接 WIFI
软件操作
- 根据上方教程创建官方示例 station( 创建示例 )
- 修改程序内容,使其连接上所需 WiFi
- 进入 Kconfig.projbuild 文件

-
将原本的 WiFi SSID 与 WiFi Password 修改为要连接的 WiFi 信息

-
修改好 COM 口及驱动对象 (建议优先使用 USB 对应的 COM 口,可通过设备管理器查看) ,点击编译并烧录即可运行程序

-
可查看 CONFIG_ESP_WIFI_SSID 的值
-
进入 station example main.c 文件

-
右键转到定义

-
可看到为此前设置的值

Zigbee
官方示例 1 路径:Zigbee-> light_sample-> HA_on_off_switch
官方示例 2 路径:Zigbee-> light_sample-> HA_on_off_light
示例效果:两块 ESP32-C6,使用其中一块(烧录 HA_on_off_switch 程序)的 BOOT 按键控制另一块的 RGB 灯珠的亮灭
注:请先往一块烧录 HA_on_off_switch 程序,再往另一块烧录 HA_on_off_light 程序
软件操作 1
- 根据上方教程创建官方示例 HA_on_off_switch( 创建示例 )
- 程序兼容 ESP32-C6,无需修改程序内容即可使用
- 修改好 COM 口及驱动对象 (建议优先使用 USB 对应的 COM 口,可通过设备管理器查看) ,点击编译并烧录即可运行程序

软件操作 2
-
根据上方教程创建官方示例 HA_on_off_light( 创建示例 )
-
程序兼容 ESP32-C6,无需修改程序内容即可使用
-
修改好 COM 口及驱动对象,点击编译并烧录即可运行程序 (需要等待片刻,让两块芯片建立连接)

-
若一直处于以下未连接的情况 , 则可能是由于这个设备有残留的其他网络信息,可以擦除设备信息( 擦除教程),再重新组网。

JTAG 调试
软件操作
-
创建需要调试的示例,本示例使用官方示例 hello_world ( 创建示例 )
-
修改 launch.json 文件

-
输入以下内容
{
"version": "0.2.0",
"configurations": [
{
"name": "GDB",
"type": "cppdbg",
"request": "launch",
"MIMode": "gdb",
"miDebuggerPath": "${command:espIdf.getXtensaGdb}",
"program": "${workspaceFolder}/build/${command:espIdf.getProjectName}.elf",
"windows": {
"program": "${workspaceFolder}\\build\\${command:espIdf.getProjectName}.elf"
},
"cwd": "${workspaceFolder}",
"environment": [{ "name": "PATH", "value": "${config:idf.customExtraPaths}" }],
"setupCommands": [
{ "text": "target remote :3333" },
{ "text": "set remote hardware-watchpoint-limit 2"},
{ "text": "mon reset halt" },
{ "text": "thb app_main" },
{ "text": "flushregs" }
],
"externalConsole": false,
"logging": {
"engineLogging": true
}
}
]
}

- 程序兼容 ESP32-C6,无需修改程序内容即可使用
- 修改好 COM 口及驱动对象 (请使用 USB 接口,UART 接口并不支持 JTAG 调试,对应的 COM 口可通过设备管理器查看) ,点击编译并烧录即可运行程序

-
点击快捷键 F1 ,输入
ESP-IDF:Device configuration
-
选择 OpenOcd Config Files

-
输入 board/esp32c6-builtin.cfg (若默认是这个,就直接回车就可以)
board/esp32c6-builtin.cfg
-
拉伸窗口宽度,直至下方显示 [OpenOCD Server]

-
点击 [OpenOCD Server] ,选择 Start OpenOCD

-
开启成功如下

-
进入调试功能,点击调试

-
成功进入调试界面

擦除设备 Flash
-
解压软件资源包(Flash 调试软件)
-
打开 flash_download_tool_3.9.5.exe 软件,选择 ESP32-C6 及 UART

-
选择 UART 的端口号,点击 START (不选择任何 bin 文件)

-
等待烧录完成,点击擦除

-
等待擦除完成
