Skip to content

常见问题 FAQ ​

环境与烧录 ​

idf.py: command not found ​

ESP-IDF 的环境变量没生效。每开一个新终端都要执行:

bash
. $HOME/esp/esp-idf/export.sh

VS Code 的 ESP-IDF 插件会自动处理这一步。

认不到串口 / 一直 Connecting...... ​

按顺序排查:

  1. 换一根 USB 线 —— 很多充电线没有数据线芯
  2. 装 USB 转串口驱动(CP2102 或 CH340,看板子上的芯片丝印)
  3. 按住 BOOT 键再按一下 EN,然后松开 BOOT
  4. 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. 栈溢出 —— 见 1.10 内存管理,用 uxTaskGetStackHighWaterMark 查
  2. 内存泄漏 —— esp_get_minimum_free_heap_size() 是否单调下降
  3. 供电不足 —— 接了功放/SD 卡时尤其常见
  4. 看门狗 —— 见下一条

Task watchdog got triggered ​

某个任务长时间没让出 CPU。检查有没有高优先级任务在死循环里不调用 vTaskDelay,见 1.6 调度器。

外设 ​

I2C 读不到传感器 ​

  1. 先跑一遍 I2C 扫描,确认地址(2.3)
  2. SDA/SCL 有没有上拉电阻
  3. 手册上的地址可能含读写位,实际要右移一位
  4. 供电和共地

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)按顺序查:

  1. SEL 脚悬空了 —— 必须明确接 GND 或 3.3V,且和代码里的声道一致
  2. CLK / DATA 接反 —— CLK 是 ESP32 输出,DATA 是麦克风输出
  3. 通道写错 —— 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 协议发布,可以。视频和图文内容仅供个人学习,请勿二次分发。