STM32的HAL库串口空闲中断+DMA丢失

2022-05-11 08:03:14 浏览数 (1)

前两天使用HAL库的空闲中断 DMA接收串口数据,第一帧会丢失,今天找了下原因。

使能DMA接收用的如下语句,

我把这句话放在了

这里使用的,这个函数是被串口初始化调用的,就是这个函数

就是相当于先开启DMA接收再使能串口。

这样的话HAL_UART_Receive_DMA()这个函数就无法正常运行(他需要

).所以HAL_UART_Receive_DMA()这个函数需要HAL_UART_INIT()之后调用。

我之前之所以想先使能DMA再使能串口,是因为怕先使能串口没来得及使能DMA的时候串口有数据进来的话会触发溢出中断,但是现在没有使能串口接收中断或溢出中断就不用担心这个了,所以改为先使能串口再使用DMA接收数据就可正常接收。

0 人点赞