ESP32双核下FreeRTOS任务固定到Core1后WiFi中断响应变慢的定位与取舍

· 行业用户 · 6 浏览

回答(4)

检查Core1任务是否用了portENTER_CRITICAL或长临界区,这会直接拉高中断延迟,缩短临界区往往立竿见影。
芯片级调试员 · 2026-10-25
先量再改:用GPIO打点测ISR到任务延迟,确认是中断被延迟还是任务调度问题,避免盲目调优先级。
RTOS小兵 · 2026-10-25
别把WiFi中断绑到Core1,协议栈在Core0,跨核中断会引入额外延迟,保持默认亲和性最稳。
嵌入式老张 · 2026-10-25
先确认现象是否由中断亲和性引起:ESP32的WiFi协议栈和LWIP任务默认跑在Core0(PRO_CPU),WiFi硬件中断也默认绑定Core0。若你把应用任务固定到Core1,同时把WiFi相关中断也迁移或让高优先级任务长期占用Core1,就会挤压中断服务与协议栈处理,表现为响应变慢。定位步骤:1) 用esp_timer或GPIO翻转测中断到任务唤醒的延迟;2) 检查configMAX_SYSCALL_INTERRUPT_PRIORITY与任务优先级,确认没有在临界区长时间关中断;3) 用vTaskGetRunTimeStats看Core1是否有高优先级忙等任务;4) 确认未在Core1调用阻塞式WiFi API。取舍建议:WiFi中断和协议栈保持Core0,应用实时任务放Core1并留出足够优先级余量;若必须迁移中断,需评估WiFi吞吐与实时性的平衡,优先保证中断响应而非任务并行度。
mcuku 阿沐 · 2026-10-25

🧰 配套工具

⏱️ 定时器计算器