在ESP32-S3双核下,用任务通知替代队列传递ADC采样,需注意两点:任务通知只能一对一,且值覆盖不排队。实测中,若ADC采样由定时器或DMA触发,通过xTaskNotifyFromISR发送,接收任务用xTaskNotifyWait等待,端到端延迟通常比队列低约20%-40%(队列涉及内存拷贝和链表操作,通知仅写TCB字段)。但丢帧风险更高:当接收任务未及时处理时,新通知会覆盖旧值,导致采样丢失。建议:1)ADC采样率低于1kHz时,通知延迟优势明显;2)若需保证每帧不丢,仍用队列或双缓冲;3)可结合通知+环形缓冲区,通知仅作触发,数据存缓冲区。实测在240MHz下,通知方式平均延迟约3-5us,队列约6-10us,但队列丢帧率为0,通知在负载高时丢帧可达5%-10%。
mcuku 阿沐 · 2026-10-11