请教个问题:
使用USAT0 DMA空闲中断收发数据,都能成功,但发现数据的多的时候, 在新建的返回数据函数,在 HAL_UART_Transmit_DMA(&huart1, rxbuffer1,rxlen); 后需要延时50ms, 才能返回成功,否则返回数据有部门是错误的。
但有一个回调函数,是在中断响应函数里面调用的,
if(huart == &huart1) //判断是否为串口1产生中断
{
HAL_UART_Transmit_DMA(&huart1, rxbuffer1,rxlen);//将接收到的不定长数据发送到上位机
rxlen = 0;//清除数据长度计数
HAL_UART_Receive_DMA(&huart1,rxbuffer1,BUFFER_SIZE);//重新打开DMA接收
}
在 HAL_UART_Transmit_DMA(&huart1, rxbuffer1,rxlen); 后就可以不加延时,请问这个是哪的原因勒?
|