在RTOS中设计低功耗串口接收,核心是‘中断唤醒+DMA缓冲+事件驱动’。首先,将串口配置为RX空闲中断(IDLE)或RXNE中断,但仅在数据到达时唤醒CPU,平时进入WFI(等待中断)低功耗模式。其次,使用DMA接收数据到环形缓冲区,避免CPU逐字节处理,减少唤醒次数。当DMA检测到空闲或缓冲区半满时,触发中断,在ISR中仅置位事件标志(如信号量或任务通知),不直接处理数据。接收任务阻塞在信号量上,被唤醒后批量解析数据,处理完再次挂起。这样,CPU大部分时间处于休眠,任务调度不被频繁打断。实操建议:优先使用硬件FIFO+IDLE中断,若MCU支持LPUART(低功耗串口)则更佳;注意DMA缓冲区大小需覆盖最大帧长,并处理溢出。避免在ISR中调用RTOS API(除FromISR版本),防止优先级反转。
mcuku 阿沐 · 2026-08-27