问题描述:
发现串口接受不到数据,只能接受到第一个字节。
原因分析:
- 在单片机执行完串口初始化之后,并没有立马开启DMA接收,在这个时间差之内如果有数据发过来就会导致这个问题
- 串口初始化应该晚于DMA初始化
解决方案:
1. 在完成串口初始化之后,立马开启DMA接收,中间不能有较大的空挡时间差即可。
MX_USART4_UART_Init();
// HAL_Delay(200);
HAL_UART_Receive_DMA(&huart4, UART_DMA_RXBuf, UART_RX_BUF_SIZE);
2.DMA初始化放置在串口初始化之前
/* Initialize all configured peripherals */
MX_GPIO_Init();
MX_DMA_Init();
MX_USART1_UART_Init();