ESP32-S3 嵌入式开发学习知识图谱
2518 字
13 分钟
ESP32-S3 嵌入式开发学习知识图谱
ESP32-S3 嵌入式开发学习知识图谱
本文档汇总本系列所有博文的章节结构、知识点关联和推荐阅读顺序。 每一篇笔记对应一个可运行的 ESP-IDF 工程,附带真实源码路径。
一、总体学习路线
┌─────────────────────────────────────────────┐ │ ESP32-S3 嵌入式开发学习路线 │ └─────────────────────────────────────────────┘ │ ┌───────────────┬───────────────┼───────────────┬───────────────┐ ▼ ▼ ▼ ▼ ▼ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ 基础原理 │ │ GPIO外设 │ │ 中断定时 │ │ 通信协议 │ │ 无线+RTOS│ │ (6篇) │ │ (5篇) │ │ (6篇) │ │ (7篇) │ │ (6篇) │ └──────────┘ └──────────┘ └──────────┘ └──────────┘ └──────────┘二、知识图谱总览
ESP32-S3 嵌入式知识体系│├── 1. 基础原理 ─────────────────────────────────────────────────│ ├── ESP-IDF 环境与 hello_world → 00_hello_world.md│ │ └── CMake 构建体系、组件化开发、menuconfig│ ││ ├── Wi-Fi 通信原理 → 01_wifi原理.md│ │ ├── 频段(2.4G/5G)、信道(1/6/11)│ │ ├── IEEE 802.11 标准(b/g/n/ac/ax)│ │ ├── 网络拓扑(星型/Mesh)│ │ ├── 路由器、IP 地址、子网掩码、DHCP│ │ ├── C/S 模型、端口号│ │ └── lwIP 协议栈(四层封装)│ ││ ├── ESP32-S3 启动流程 → 02_启动原理_NVS_SPIFFS.md│ │ ├── ROM → bootloader → app 多级引导│ │ ├── 对比 Windows BIOS 启动│ │ └── vTaskStartScheduler 的启动时机│ ││ ├── NVS(非易失键值存储) → 同 02_启动原理_NVS_SPIFFS.md│ │ ├── 键值对数据库 vs 文件系统│ │ ├── 磨损均衡、命名空间│ │ └── Wi-Fi/BLE 为什么依赖 NVS│ ││ ├── SPIFFS(Flash 文件系统) → 同 02_启动原理_NVS_SPIFFS.md│ │ ├── 类 POSIX 文件 API(fopen/fread)│ │ ├── 与 FAT 的对比│ │ └── VFS 注册机制│ ││ └── FreeRTOS 数据类型与可移植性 → 02_启动原理_NVS_SPIFFS.md│ ├── BaseType_t / TickType_t / TaskHandle_t│ └── v / x / pd 命名约定│├── 2. GPIO 与基础外设 ──────────────────────────────────────────│ ├── LED 闪烁 → 01_LED闪烁.md│ │ ├── gpio_config_t 结构体│ │ ├── 位掩码(1ULL << gpio_num)│ │ └── 组件化封装(LED_init / gpio_toggle)│ ││ ├── 流水灯 → 02_流水灯.md│ │ ├── 多 GPIO 位掩码配置│ │ └── 移位操作实现流水效果│ ││ ├── 蜂鸣器 → 03_蜂鸣器.md│ │ ├── GPIO 输出复用│ │ └── 有源/无源蜂鸣器区别│ ││ ├── 按键输入 → 04_按键输入.md│ │ ├── GPIO_MODE_INPUT + 上拉│ │ ├── 软件消抖(延时法)│ │ └── 轮询 vs 中断两种检测方式│ ││ └── 多任务初探 → 05_多任务初探.md│ ├── 无 RTOS 的协作式"多任务"│ └── 与 FreeRTOS 的过渡对比│├── 3. 中断与定时器 ─────────────────────────────────────────────│ ├── 外部中断 EXTI → 01_外部中断.md│ │ ├── gpio_install_isr_service()│ │ ├── gpio_isr_handler_add()│ │ ├── ISR 中不能阻塞、不能 printf│ │ └── 中断服务与任务通信│ ││ ├── LCD 显示屏 → 02_LCD显示.md│ │ ├── SPI LCD 驱动框架│ │ ├── 字库(lcdfont.h)│ │ └── 绘图函数封装│ ││ ├── GP 通用定时器 → 03_GP定时器.md│ │ ├── gptimer_handle_t│ │ ├── 定时器回调(ISR 上下文)│ │ └── 单次 / 周期模式│ ││ ├── ESP 高精度定时器 → 04_ESP定时器.md│ │ ├── esp_timer_create()│ │ ├── 软件定时器(非硬件)│ │ └── 与 GPTimer 的对比与选择│ ││ ├── PWM 输出 → 05_PWM与舵机.md│ │ ├── LEDC 控制器│ │ ├── 占空比与分辨率│ │ └── ledc_timer_config / ledc_channel_config│ ││ └── PWM 舵机控制 → 05_PWM与舵机.md│ ├── 舵机角度→脉宽映射│ └── 50Hz / 0.5ms~2.5ms 控制信号│├── 4. 模拟外设 ─────────────────────────────────────────────────│ ├── 低速 ADC → 01_低速ADC.md│ │ ├── adc_oneshot 单次采样│ │ └── adc_cali 校准│ ││ └── 连续 ADC → 02_连续ADC.md│ ├── adc_continuous 连续模式 + DMA│ └── 数据缓冲与回调处理│├── 5. 通信协议 ─────────────────────────────────────────────────│ ├── UART 串口通信 → 01_UART.md│ │ ├── uart_param_config│ │ ├── 中断接收 / 事件队列│ │ └── 波特率、数据位、校验│ ││ ├── I2C 总线 → 02_IIC.md│ │ ├── i2c_master_bus_handle_t│ │ ├── 设备地址、读写时序│ │ └── 开漏 + 上拉的硬件要求│ ││ ├── SPI LCD 驱动 → 03_SPI_LCD.md│ │ ├── SPI 主机模式配置│ │ ├── CS/DC/RST/BLK 引脚│ │ └── 命令/数据切换│ ││ ├── SPI SD 卡读写(SPITF) → 04_SPITF_SD卡.md│ │ ├── SDSPI_HOST_DEFAULT()│ │ ├── esp_vfs_fat_sdspi_mount()│ │ ├── VFS 路径注册 → fopen/fprintf│ │ └── mount_config 参数详解│ ││ ├── Camera 摄像头 → 05_Camera.md│ │ ├── SCCB(类 I2C)配置│ │ ├── DVP 并行接口│ │ └── 像素格式与帧缓冲│ ││ └── SPIFFS Flash 文件系统 → 01_SPIFFS.md│ ├── esp_vfs_spiffs_register()│ ├── 分区表配置(partitions_user.csv)│ ├── 磨损均衡│ └── VFS 统一接口:fopen/fread/fwrite│├── 6. 无线通信 ─────────────────────────────────────────────────│ ├── Wi-Fi STA 模式 → 01_WiFi_STA.md│ │ ├── nvs_flash_init → esp_netif → esp_wifi│ │ ├── 事件驱动:WIFI_EVENT + IP_EVENT│ │ ├── WIFI_EVENT_STA_START / CONNECTED / DISCONNECTED│ │ └── IP_EVENT_STA_GOT_IP(真正联网成功标志)│ ││ ├── Wi-Fi AP 模式 → 02_WiFi_AP.md│ │ ├── esp_netif_create_default_wifi_ap()│ │ ├── SSID / 密码 / authmode / max_connection│ │ ├── WIFI_EVENT_AP_STACONNECTED / STADISCONNECTED│ │ └── 与 STA 模式的逐项对比│ ││ ├── NTP 网络校时 → 03_NTP校时.md│ │ ├── SNTP 同步(sntp_setoperatingmode)│ │ ├── 时区设置(TZ 环境变量 / setenv)│ │ ├── localtime() 时间分解│ │ └── STA连通→校时→LCD刷新 调用链│ ││ └── BLE 蓝牙低功耗 → 04_BLE.md│ ├── NimBLE 协议栈初始化│ ├── GAP:广播 / 扫描│ ├── GATT:Service → Characteristic│ ├── Write / Read / Notify│ └── 手机 APP → 特征值 → 控制硬件│├── 7. FreeRTOS 实时操作系统 ────────────────────────────────────│ ├── 多任务创建与删除 → 01_多任务创建与删除.md│ │ ├── xTaskCreatePinnedToCore 七参数│ │ ├── vTaskDelete + 句柄置 NULL│ │ ├── 同优先级时间片轮转│ │ ├── vTaskDelay 的三大作用:让出 CPU / 喂狗 / tick-Hz│ │ └── FreeRTOS 数据类型表(BaseType_t 等)│ ││ └── 任务挂起与恢复 → 02_任务挂起与恢复.md│ ├── vTaskSuspend / vTaskResume│ ├── Suspended vs Blocked vs Deleted│ ├── 五态任务模型完整图│ └── app_main() 返回 vs while(1) 死循环│└── 附录 ├── CMake 组件注册模板(components/CMakeLists.txt) ├── 分区表模板(partitions_user.csv) └── ESP-IDF 常用 menuconfig 选项三、推荐阅读顺序
循序路径(新手)
00_hello_world ──► 01_LED闪烁 ──► 02_流水灯 ──► 03_蜂鸣器 │ ▼ 04_按键输入 │ ┌──────────────┼──────────────┐ ▼ ▼ ▼ 06_外部中断 05_多任务初探 03_GP定时器 │ │ │ ▼ ▼ ▼ 02_LCD显示 01_多任务创建 04_ESP定时器 │ (FreeRTOS) │ ▼ │ ▼ ┌─────┴─────┐ │ 05_PWM与舵机 │ │ │ │ ▼ ▼ ▼ ▼ 03_SPI_LCD 10_PWM 02_挂起恢复 02_连续ADC │ │ ▼ │ 04_SPITF_SD卡 │ │ │ ▼ │ 01_SPIFFS │ │ │ └────────┬───────────┘ │ ▼ 01_WiFi_STA ──► 02_WiFi_AP │ ▼ 03_NTP校时 │ ▼ 04_BLE独立阅读(有基础)
各模块内部相对独立,可以按需跳读:
| 模块 | 前置依赖 | 可以独立切入 |
|---|---|---|
| 基础原理 | 无 | ✓ 任意顺序 |
| GPIO 外设 | 01_LED | GPIO 相关可串读 |
| 中断定时器 | 04_按键输入 + 07_LCDDisplay | 中断概念需先理解 |
| 模拟外设 | 无 | ✓ 独立阅读 |
| 通信协议 | GPIO 基础 | I2C → SPI → Camera 建议串读 |
| 无线通信 | 基础原理 + GPIO | STA → AP → NTP 建议串读 |
| FreeRTOS | 基础原理 + GPIO | 两篇建议顺序读 |
四、知识点交叉索引
纵向依赖(前→后)
| 前置知识点 | 出现章节 | 被后续哪些章节使用 |
|---|---|---|
gpio_config_t / 位掩码 | 01_LED | 流水灯、蜂鸣器、按键、中断、LCD、…(几乎所有章节) |
vTaskDelay() | 01_LED | FreeRTOS 全部、Wi-Fi 全部、BLE、NTP |
| 按键消抖 | 04_按键输入 | 外部中断、FreeRTOS 挂起恢复 |
| SPI 协议 | 03_SPI_LCD | SPITF SD 卡、Camera |
fopen/fprintf (VFS) | 04_SPITF_SD卡 | SPIFFS |
nvs_flash_init() | 01_WiFi_STA | AP、NTP、BLE |
| Wi-Fi 事件模型 | 01_WiFi_STA | AP、NTP 校时 |
xTaskCreatePinnedToCore | FreeRTOS 多任务 | 挂起恢复、Wi-Fi 各章、BLE、NTP |
横向对比(同类知识放一起看)
| 对比主题 | 涉及章节 |
|---|---|
| 轮询 vs 中断 | 04_按键输入 vs 01_外部中断 |
| GP 定时器 vs ESP 定时器 | 03_GP定时器 vs 04_ESP定时器 |
| 低速 ADC vs 连续 ADC | 01_低速ADC vs 02_连续ADC |
| SPI LCD vs SPI SD 卡 | 03_SPI_LCD vs 04_SPITF_SD卡 |
| SPITF (SD卡) vs SPIFFS (Flash) | 04_SPITF_SD卡 vs 01_SPIFFS |
| NVS vs SPIFFS | 02_启动原理_NVS_SPIFFS |
| STA vs AP | 01_WiFi_STA vs 02_WiFi_AP |
| FreeRTOS Delete vs Suspend | 01_多任务创建与删除 vs 02_任务挂起与恢复 |
| FreeRTOS 启动 vs Windows BIOS | 02_启动原理_NVS_SPIFFS |
五、源码工程 → 博文映射
| 源码目录(工程路径) | 对应博文 |
|---|---|
00_hello_world | 01_基础原理/00_hello_world.md |
0-1_under_Loop_stu/notes.md | 01_基础原理/02_启动原理_NVS_SPIFFS.md |
0-1_under_Loop_stu/wifi_notes.md | 01_基础原理/01_wifi原理.md |
01_LED | 02_GPIO与基础外设/01_LED闪烁.md |
02_FlowingLED | 02_GPIO与基础外设/02_流水灯.md |
03_Beep | 02_GPIO与基础外设/03_蜂鸣器.md |
04_Key_board | 02_GPIO与基础外设/04_按键输入.md |
05_multitask | 02_GPIO与基础外设/05_多任务初探.md |
06_Exti | 03_中断与定时器/01_外部中断.md |
07_LCDDisplay | 03_中断与定时器/02_LCD显示.md |
08_GPTimer | 03_中断与定时器/03_GP定时器.md |
09_ESPTimer | 03_中断与定时器/04_ESP定时器.md |
10_PWM + 11_PWMServoMotor | 03_中断与定时器/05_PWM与舵机.md |
12_ADCContinuous | 04_模拟外设/02_连续ADC.md |
13_ADC | 04_模拟外设/01_低速ADC.md |
15_UART | 05_通信协议/01_UART.md |
16_IIC | 05_通信协议/02_IIC.md |
17_SPILCD | 05_通信协议/03_SPI_LCD.md |
18_SPITF | 05_通信协议/04_SPITF_SD卡.md |
19_Camera | 05_通信协议/05_Camera.md |
20_SPIFFS | 06_存储/01_SPIFFS.md |
21_WIFI_STA | 07_无线通信/01_WiFi_STA.md |
22_WIFI_AP | 07_无线通信/02_WiFi_AP.md |
23_NTCTime | 07_无线通信/03_NTP校时.md |
24_BLE | 07_无线通信/04_BLE.md |
FREERTOS/1_MultiTask | 08_FreeRTOS/01_多任务创建与删除.md |
FREERTOS/2_SuspendTask | 08_FreeRTOS/02_任务挂起与恢复.md |
六、博文统一排版规范
每篇博文按以下结构组织:
- 标题:
# 章节名 — 一句话描述 - API 速查表:本章涉及的 API 一览
- 目录:可点击跳转的命名锚点目录
- 概述:本章解决了什么问题,和前后章节的关系
- 原理讲解:硬件原理 / 协议原理 / 软件架构(保留原笔记的 ASCII 图、表格、代码块)
- 代码详解:按源文件路径逐段拆解,引用真实行号
- 调用链路图:ASCII 图展示函数调用关系
- 对比分析:如有相关章节,做横向对比表
- Tips:本章需要特别注意的细节、个人踩坑记录、设计决策思考
- 小结:核心收获一句话总结
本知识图谱跟随工程更新持续维护。最后更新:2026-07-14
文章分享
如果这篇文章对你有帮助,欢迎分享给更多人!
ESP32-S3 嵌入式开发学习知识图谱
https://mjzy.tech/posts/embedded/esp32-s3/00-knowledge-map/ 相关文章 智能推荐
1
ESP32-S3 Hello World 学习笔记
物联网 Hello World 是 ESP-IDF 开发框架最基础的入门项目,用于验证开发环境配置是否正确,并展示 ESP32-S3 项目的基本结构。
2
ESP32-S3 外部中断(EXTI)学习笔记
物联网 本章节学习 GPIO 外部中断机制,实现按键中断触发 LED 状态切换。相比轮询检测,中断方式响应更及时,CPU 利用率更高。
3
ESP32-S3 多任务(Multitask)学习笔记
物联网 本章节深入学习 FreeRTOS 多任务编程,理解 ESP32-S3 双核处理器的任务分配机制,实现 LED 任务和按键任务的并行执行。
4
ESP32-S3 通用定时器(GPTimer)学习笔记
物联网 本章节学习 ESP32-S3 的通用定时器(General Purpose Timer),实现周期性定时任务。GPTimer 是 ESP-IDF 的新版定时器驱动,相比旧版 timer 驱动具有更好的 API 设计和性能。
5
ESP32-S3 LCD 显示学习笔记
物联网 注意:SPI 相关 API 将在后续章节详细讲解,本章节仅关注 LCD 显示调用。
随机文章 随机推荐