目录
[1.1 下载安装 ESP-IDF的软件开发包SDK](#1.1 下载安装 ESP-IDF的软件开发包SDK)
[1.3 SDK示例](#1.3 SDK示例)
[2.1 VSCODE创建工程](#2.1 VSCODE创建工程)
[2.2 项目配置](#2.2 项目配置)
[2.2.1 cpu频率](#2.2.1 cpu频率)
[2.2.2 flash](#2.2.2 flash)
[2.2.3 psram](#2.2.3 psram)
[2.2.4 freertos](#2.2.4 freertos)
[2.2.5 partition](#2.2.5 partition)
[2.2.6 向项目里添加文件(组件)操作(建议使用vscode插件创建)](#2.2.6 向项目里添加文件(组件)操作(建议使用vscode插件创建))
[2.2.7 添加官方组件](#2.2.7 添加官方组件)
[2.2.8 删除项目里面的组件](#2.2.8 删除项目里面的组件)
[1. 直接删除组件文件夹](#1. 直接删除组件文件夹)
[2. 删除代码里的引用](#2. 删除代码里的引用)
[3. 清理编译缓存(必须做!)](#3. 清理编译缓存(必须做!))
[4. 重新编译](#4. 重新编译)
[3.1 加快项目编译速度](#3.1 加快项目编译速度)
[3.2 下载程序说明](#3.2 下载程序说明)
[3.3 ESP-IDF软件开发包说明](#3.3 ESP-IDF软件开发包说明)
1.开发环境搭建
前提条件:安装了git和python10-python13之间的版本。
1.1 下载安装 ESP-IDF的软件开发包SDK
离线安装包:
https://dl.espressif.cn/dl/esp-idf/
https://dl.espressif.cn/dl/esp-idf/
安装时需要注意:应用修复


安装需要不少时间。
1.2增加环境变量

1.3 SDK示例
安装完成之后,在相应的安装目录会有从github仓库克隆的程序示例,就跟常规的单片机的sdk一样,有外设例程,如图所示:

以上的example文件夹里面的例子,可以在配置vscode后,复制需要的例程到其他空目录(注意目录必须是英文),直接用vscode打开编译即可。
1.4.esp32前端工具的使用命令

安装前端工具以后可以使用图示命令,使用示例
bash
#打开powershell,进入一个英文目录(必须是英文路径不然可能出错)
idf.py create-project test
cd test
idf.py set-target esp32s3 #设定目标芯片
idf.py build #编译代码
idf.py clean #清除编译结果
1.5下载安装vscode和ESP-IDF插件
https://code.visualstudio.com/
https://code.visualstudio.com/在vscode安装插件 esp-idf

1.6 配置ESP-IDF插件

用vscode打开一个空文件夹,就会出现配置项目

配置完成后,在vscode最下面集成了IDF工具:

从左到右列表分别是:
- SDK版本
- 选择flash烧录方法
- 选择com口
- 选择目标芯片(类似于:idf.py set-target esp32s3)
- SDK配置编辑器(配置flash,时钟频率等,idf.py menuconfig)
- 清除编译目标(类似于:idf.py fullclean)
- 编译项目
- 下载到flash
- idf.py monitor(打开串口日志工具,它会触发一次重启 (自动复位),不想重启用:
idf.py monitor --no-reset退出按:Ctrl + ]) - 调试项目
- 编译和打开串口日志工具
2.工程创建
2.1 VSCODE创建工程
用vscode打开一个空文件夹,就会出现配置项目,配置后可以直接在vscode创建新工程。

或者执行 ctrl+shift+p 搜索 new project,也可以创建新项目。
注意:需要等一会才能创建好新工程,vscode右下角有进度条可以展示进度。

建议复制工程文件夹: D:\Espressif\frameworks\esp-idf-v5.5.4\tools\templates\sample_project 到
D:\Espressif\frameworks\esp-idf-v5.5.4\examples\get-started 目录里面,这样就可以在新建工程时方便选择 get-started 以 sample_project (也可以不复制,在ESP-IDF Templates 里面也有这个工程)这个工程为基础。如果需要使用蓝牙或者wifi什么的也可以相应的工程模版。

2.2 项目配置
2.2.1 cpu频率

2.2.2 flash

2.2.3 psram

2.2.4 freertos

2.2.5 partition
先设置分区为16MB

设置详细分区表


实际这个就是个csv文件,只不过他以ui的形式表现出来,以后新建工程直接打开这个csv复制这段内容即可。
XML
# ESP-IDF Partition Table
# Name, Type, SubType, Offset, Size, Flags
nvs,data,nvs,0x9000,0x6000,
phy_init,data,phy,0xf000,0x1000,
factory,app,factory,0x10000,0x1f0000,
vfs,data,fat,0x200000,0xa00000,
storage,data,spiffs,0xc00000,0x400000,

注意:只能有一个factory的app扇区(启动地址可以随便定),如果要ota升级需要用到两个扇区必须这么写:
|---------|------|-------|----------|----------|
| 名称 | 类型 | 子类型 | 地址 | 大小 |
| nvs | data | nvs | 0x9000 | 0x4000 |
| otadata | data | ota | 0xd000 | 0x2000 |
| ota_0 | app | ota_0 | 0x10000 | 0x180000 |
| ota_1 | app | ota_1 | 0x190000 | 0x180000 |
ota_0和ota_1大小必须相等,otadata 必须有且为 0x2000 字节。
2.2.6 向项目里添加文件(组件)操作(建议使用vscode插件创建)
举例增加disp组件(增加disp.h和disp.c)使用命令:
bash
mkdir components#可能不需要这个,在创建组件的时候会自动创建,如果没有自动创建则需要创建,并把组件目录整体移动到这个文件夹
idf.py create-component disp
注意:ESP-IDF 不认识根目录的组件,只认 components 文件夹里的!

这样会自动在项目里面添加组件目录,可以直接在main.c文件中调用:

也可以使用vscode插件创建:

注意:编译前需要先执行 idf.py fullclean 命令。
2.2.7 添加官方组件
在vscode 快捷键(ctrl+shift+P)搜索:ESP-IDF Show ESP component Registry

点击第一个展示组件:

例如:添加 esp-modbus组件
点击这个组件,进入后右上角点击安装 install

添加成功后,项目文件夹会有一下文件:

ESP32的组件地址:
https://components.espressif.com/
https://components.espressif.com/ ESP32的官方组件地址在这里,可以打开进去浏览,一般组件页面里面都有该组件的使用说明,但是是英文的,可以利用浏览器的翻译方便查看,如图所示:


2.2.8 删除项目里面的组件
删除组件 标准步骤
1. 直接删除组件文件夹
比如你要删 LED 组件:
bash
项目/components/LED/ → 直接整个文件夹删掉
2. 删除代码里的引用
所有用到它的地方都删掉:
bash
// 删掉
#include "LED.h"
// 删掉调用
func();
led_init();
3. 清理编译缓存(必须做!)
bash
idf.py fullclean
4. 重新编译
bash
idf.py build
3.拓展功能
3.1 加快项目编译速度
在执行编译前打开多线程编译:
bash
# 临时生效(当前终端)
$env:CMAKE_BUILD_PARALLEL_LEVEL = 12
# 永久生效(以后所有终端都自动用12线程)
#[Environment]::SetEnvironmentVariable("CMAKE_BUILD_PARALLEL_LEVEL", "12", "User")
idf.py build
3.2 下载程序说明
执行下载到底下载了那些文件:
- bootloader.bin boot文件
- partition-table.bin 分区表文件
- sample_project.bin 项目文件
3.3 ESP-IDF软件开发包说明
- ESP-IDF = FreeRTOS + 硬件驱动 + 网络协议栈 + 工具链
- 你写的
app_main()本质上就是 FreeRTOS 的一个任务 - 系统底层:WiFi、蓝牙、以太网、日志、USB 等,全都是跑在 FreeRTOS 任务里的
- 你写的所有代码,默认都运行在 FreeRTOS 调度下