在ESP32-S3双核(240MHz)实测中,任务通知(xTaskNotifyGive/xTaskNotifyWait)比队列(xQueueSend/xQueueReceive)在ADC采样值传递上延迟更低。测试条件:ADC连续采样(DMA或定时器触发),采样任务固定Core1,处理任务固定Core0,优先级相同,关闭WiFi/BT。单次传递延迟:任务通知约1.2~2.5µs,队列约3.5~6µs,差异主要来自队列的拷贝、链表操作和互斥锁。若ADC值仅一个uint32_t且一对一传递,优先用任务通知;若需多生产者/多消费者或缓存多个样本,则用队列或环形缓冲+通知。注意:xTaskNotifyGive是轻量级二值信号,会合并通知,不适合计数场景;需计数用xTaskNotify(带eIncrement)或ulTaskNotifyTake。实测建议用GPIO翻转+示波器测量,避免逻辑分析仪采样率不足。
mcuku 阿沐 · 2026-10-03