解决串口开启DMA接受却只能接收到第一个字节之后就再也接受不到数据的问题

设备:

单片机:STM32G070 MDK:V5.25

问题描述:

发现串口接受不到数据,只能接受到第一个字节。

  MX_USART4_UART_Init();
  HAL_Delay(200);
  HAL_UART_Receive_DMA(&huart4, UART_DMA_RXBuf, UART_RX_BUF_SIZE);

原因分析:

在单片机执行完串口初始化之后,并没有立马开启DMA接收,在这个时间差之内如果有数据发过来就会导致这个问题


解决方案:

在完成串口初始化之后,立马开启DMA接收,中间不能有较大的空挡时间差即可。

  MX_USART4_UART_Init();
//  HAL_Delay(200);
  HAL_UART_Receive_DMA(&huart4, UART_DMA_RXBuf, UART_RX_BUF_SIZE);

你可能感兴趣的:(STM32,串口,USART,STM32,DMA)