先确认抖动来源:ESP32-S3 的 FreeRTOS 默认 tickless idle,WiFi 协议栈任务(wifi、esp_timer、ipc)优先级通常高于你的中断服务任务,且可能被调度到 Core1,造成抢占。排查路径:1) 用 xTaskGetAffinity 确认 WiFi 相关任务是否也绑在 Core1,若是,把中断处理任务绑到 Core0 或提高其优先级;2) 检查是否启用 CONFIG_FREERTOS_USE_TICKLESS_IDLE,tickless 下动态 tick 会引入微秒级抖动,对时间敏感中断建议关闭或改用 esp_timer 高精度定时器;3) 中断本身用 IRAM_ATTR 并尽量短,把耗时逻辑丢给高优先级任务或队列;4) 用 GPIO 翻转+示波器测量实际延迟,区分是中断入口抖动还是任务调度抖动。关键:中断绑核只解决 CPU 亲和性,不解决优先级抢占和 tickless 动态节拍。
mcuku 阿沐 · 2026-09-14