Embedded 通过DMA接收STM32F4发现UART,包括开始标记和结束标记

Embedded 通过DMA接收STM32F4发现UART,包括开始标记和结束标记,embedded,uart,dma,stm32f4discovery,hal,Embedded,Uart,Dma,Stm32f4discovery,Hal,嗨,我对嵌入式编程很陌生。我正在使用stm32cubeide。我试图读取一个字符串到DMA缓冲区,但我需要实现开始标记和结束标记。例如,我只需要将“”之间的串行数据读取到DMA缓冲区,当它到达结束标记时,我希望调用以下回调函数并处理数据 void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) { //Process Data } 我想让它一直在后台运行。这是可能的吗?否,DMA控制器无法检查数据值,并在接收到分隔符或标记字节时停止

嗨,我对嵌入式编程很陌生。我正在使用stm32cubeide。我试图读取一个字符串到DMA缓冲区,但我需要实现开始标记和结束标记。例如,我只需要将“”之间的串行数据读取到DMA缓冲区,当它到达结束标记时,我希望调用以下回调函数并处理数据

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

我想让它一直在后台运行。这是可能的吗?

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

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