新手入门
- 积分
- 5
- 金钱
- 5
- 注册时间
- 2021-5-19
- 在线时间
- 0 小时
|
环境:STM32F407 USART2和UART4用于ModBus从站端口, 使用DMA进行数据搬运,使用空闲中断触发读取接收的数据 USART2的发送和接受分别使用DMA1_Stream6和DMA1_Stream5
UART4d 发送和接受分别使用DMA1_Stream4和DMA1_Stream2
STM32F407驱动库使用STM32Cube_FW_F4
问题现象:如果主站带多个从站, 系统运行几个小时后,USART2使用的DMA状态会出现HAL_DMA_STATE_TIMEOUT,
之后调用HAL_UART_Receive_DMA接口就接收不到数据了,而UART4端口正常,2个端口的处理流程相同
具体代码如下图,求大神们帮忙看看!代码调用驱动逻辑是否有错误?还有是否有规避的方法?
图中COM1对应的USART2端口



|
|