STM32F4-Discovery UART 通过 DMA 接收,包含开始标记和结束标记

STM32F4-Discovery UART receive by DMA with included start-marker as well as an end-marker

您好,我是嵌入式编程的新手。我正在使用 stm32cube IDE。我正在尝试将字符串读取到 DMA 缓冲区,但我需要实现开始标记和结束标记。例如,我只需要将“<”和“>”之间的串行数据读取到 DMA 缓冲区,当它到达结束标记时,我想调用以下回调函数并处理数据。

void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) 
{
  //Process Data 
}

我希望它一直在后台 运行。这可能吗?

不,DMA 控制器无法检查数据的值并在接收到定界符或标记字节时停止或中断。 DMA 控制器只能将接收到的字节复制到内存中。如果要读取分隔符之间的可变长度数据包,则需要使用 CPU 检查每个字节是否为分隔符。您可以使用 UART 的 RX 中断在接收到每个字节时检查分隔符。

DMA 可能对接收连续的字节流或已知长度的数据包很有用。