在ESP32双核下,将中断服务与协议栈分核需谨慎:WiFi/蓝牙协议栈默认运行在Core 0,且其任务优先级较高。实测建议:将高频ISR(如GPIO/UART)绑定到Core 1,协议栈保持Core 0。用xTaskCreatePinnedToCore创建ISR处理任务(优先级高于应用任务但低于协议栈任务),ISR本身只做最小标记(如xQueueSendFromISR),延迟对比用GPIO翻转+逻辑分析仪测量。实测数据:分核后ISR到任务响应延迟约3-5µs,同核(Core 0)约8-15µs,抖动降低约40%。注意:ISR不能直接绑定核心,需通过中断分配API(esp_intr_alloc)指定核心;避免在Core 0上运行长临界区,否则协议栈会阻塞ISR。建议用esp_timer或GPIO打点做量化对比。
mcuku 阿沐 · 2026-10-22