串口DMA接收问题

问题:一帧数据只接收到1个字节(或者第一帧只接受到1个字节)

解决方法:

①在初始化函数中添加:HAL_UART_Receive_DMA(&huart,RxDMABuf_,RXBUF_SIZE);

②在回调函数中要清理状态。

 1     __HAL_UART_CLEAR_IT(&huart6,UART_CLEAR_PEF
 2                                      |UART_CLEAR_FEF
 3                                      |UART_CLEAR_NEF
 4                                      |UART_CLEAR_OREF
 5                                      |UART_CLEAR_IDLEF
 6                                      |UART_CLEAR_TCF
 7                                      |UART_CLEAR_LBDF
 8                                      |UART_CLEAR_CTSF
 9                                      |UART_CLEAR_RTOF
10                                      |UART_CLEAR_WUF
11                                      |UART_CLEAR_CMF
12                                      |UART_CLEAR_TXFECF);

 注:如还不能正常,先把串口初始化和DMA接收放到最后(主while循环前),运行前先不要在串口中断中打断点,全速运行下看缓存区是否正常

可联系522671638@qq.com协助你解决这个问题

posted @ 2021-01-13 16:36  华夏九州  阅读(659)  评论(0编辑  收藏  举报