最近开发esp32,突然意识到,有些报错感觉值得记录下来,于是有本篇,不仅供我记录,同时也可以给大家参考

本系列会一直更新

一.2026/1/4 看门狗超时错误

报错详情:

E (80779) task_wdt: Task watchdog got triggered. The following tasks/users did not reset the watchdog in time:
E (80779) task_wdt:  - IDLE0 (CPU 0)
E (80779) task_wdt: Tasks currently running:
E (80779) task_wdt: CPU 0: main
E (80779) task_wdt: CPU 1: IDLE1
E (80779) task_wdt: Print CPU 0 (current core) backtrace

问题原因

while(1) 死循环中没有任何延迟,导致主任务一直占用 CPU,IDLE 任务无法运行,触发看门狗超时。

解决方案

在循环中添加了 vTaskDelay(pdMS_TO_TICKS(1000)),每秒让出一次 CPU 时间,让 IDLE 任务可以运行。

二, FreeRTOS 任务函数不能直接返回

E (1834) FreeRTOS: FreeRTOS Task "afe_sr_iface_ta" should not return, Aborting now!

问题原因

FreeRTOS 任务函数执行完毕后直接返回,触发系统中止。FreeRTOS 任务有两种正确的结束方式:

  1. 无限循环 - 任务永远运行(最常用)
  2. 主动删除 - 调用 vTaskDelete(NULL) 删除自己

解决方案

  • 添加了 while(1) 无限循环
  • 循环中添加了 vTaskDelay() 避免占满 CPU

对单片机感兴趣但时常因为一个bug解决不了的,建议加群,我喜欢聚在一起唠嗑,有写好的有趣的小demo我也会分享在群里哦

 

 

更多推荐