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

问题描述

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

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

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

解决方法

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

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