外观
常见问题 FAQ
环境与烧录
idf.py: command not found
ESP-IDF 的环境变量没生效。每开一个新终端都要执行:
bash
. $HOME/esp/esp-idf/export.shVS Code 的 ESP-IDF 插件会自动处理这一步。
认不到串口 / 一直 Connecting......
按顺序排查:
- 换一根 USB 线 —— 很多充电线没有数据线芯
- 装 USB 转串口驱动(CP2102 或 CH340,看板子上的芯片丝印)
- 按住 BOOT 键再按一下 EN,然后松开 BOOT
- Linux 下加权限:
sudo usermod -aG dialout $USER(要重新登录)
烧录成功但串口全是乱码
波特率设错了,ESP32-S3 默认 115200。开头一小段 74880 波特率的 bootloader 日志是乱码,属正常。
运行时崩溃
Guru Meditation Error: Core 0 panic'ed (LoadProhibited)
访问了非法地址,九成是空指针或野指针。看崩溃信息里的 PC 和 EXCVADDR,然后:
bash
idf.py monitor # monitor 会自动把地址翻译成源码行号跑一会儿就重启,没有明显错误
按可能性排序:
- 栈溢出 —— 见 1.10 内存管理,用
uxTaskGetStackHighWaterMark查 - 内存泄漏 ——
esp_get_minimum_free_heap_size()是否单调下降 - 供电不足 —— 接了功放/SD 卡时尤其常见
- 看门狗 —— 见下一条
Task watchdog got triggered
某个任务长时间没让出 CPU。检查有没有高优先级任务在死循环里不调用 vTaskDelay,见 1.6 调度器。
外设
I2C 读不到传感器
- 先跑一遍 I2C 扫描,确认地址(2.3)
- SDA/SCL 有没有上拉电阻
- 手册上的地址可能含读写位,实际要右移一位
- 供电和共地
LCD 花屏 / 颜色不对 / 白屏
| 症状 | 先查 |
|---|---|
| 白屏无内容 | 背光通了但没初始化成功,检查 RST/DC 接线 |
| 花屏、随机噪点 | DMA 缓冲区没用 MALLOC_CAP_DMA,或 SPI 时钟太高 |
| 颜色反了 | esp_lcd_panel_invert_color() |
| 颜色偏怪(红变蓝) | 字节序,试 swap_color_bytes |
详见 2.4 TFT LCD。
ADC 读数一直是 4095 或 0
- 用了 ADC2 且开了 WiFi —— S3 上必须换到 ADC1(GPIO 1-10),见 2.5
- 衰减
atten设小了,超量程被截断
I2S 麦克风只有噪声或全是 0
PDM 麦克风(本课程用的 LMD4030T261-OA1)按顺序查:
- SEL 脚悬空了 —— 必须明确接 GND 或 3.3V,且和代码里的声道一致
- CLK / DATA 接反 —— CLK 是 ESP32 输出,DATA 是麦克风输出
- 通道写错 —— PDM 接收在 S3 上只能用
I2S_NUM_0
I2S 麦克风(如 INMP441)另有一条:必须按 32 位读、右移取高位,见 2.6。
项目相关
重启后设置就没了
nvs_set_* 之后忘了调 nvs_commit(),见 3.4 NVS。
时间差了 8 小时或 16 小时
时区字符串写错。CST-8 才是 UTC+8,符号和直觉相反,且必须调 tzset()。见 3.5 SNTP。
HTTPS 请求崩溃
TLS 握手吃栈很凶,任务栈至少 6KB。见 3.3 任务划分。
课程本身
一定要用 ESP32-S3 吗?
第一章是通用 FreeRTOS 知识,任何平台都适用。第二、三章的代码基于 ESP32-S3 + ESP-IDF,换 STM32 需要自己改驱动层,但架构和任务划分的思路完全通用。
课程会更新吗?
会。每节课底部有「最后更新于」时间戳。
可以商用课程代码吗?
示例代码以 MIT 协议发布,可以。视频和图文内容仅供个人学习,请勿二次分发。