Usart
1. 为什么没有使用 HAL_UART_Receive_DMA?
HAL_UART_Receive_DMA
是 HAL 库中用于通过 DMA 接收数据的基础函数。但是它有以下局限性:
回调函数:void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
-
固定数据长度:
HAL_UART_Receive_DMA
接收时需要提前知道数据的长度(Size
参数)。- 如果接收的数据长度不固定(例如,串口接收到的数据包长度不一致),就需要额外的逻辑来处理数据长度,这会增加代码复杂性。
-
无法处理空闲中断:
- 在 UART 通信中,数据传输完成后通常会有一段空闲时间(即串口不再接收数据),这被称为“空闲中断”。