问题描述 : 我使用UART2和UART3 ,两边同时接收数据, UART2_RX数据-->UART3_TX发出去, UART3_RX数据-->UART2_TX发出去,串口发送均使 用DMA,串口接收使用空闲中断接收!
注意 : 单向收发均没问题(UART2_RX-->UART3_TX,UART3_RX-->UART2_TX),如果两边用串口工具两边同时间隔10ms发数据,就会卡 死,丢字节;
主函数代码:
int main(void)
{
HAL_Init();
/* Configure the system clock */
SystemClock_Config();
/* Ini
tialize all configured peripherals */
MX_GPIO_Init();
MX_DMA_Init();
MX_USART1_UART_Init();
MX_USART2_UART_Init();
MX_USART3_UART_Init();
__HAL_UART_ENABLE_IT(&huart2, UART_IT_IDLE);
__HAL_UART_ENABLE_IT(&huart3, UART_IT_IDLE);
while (1)
{
if(Uart2_Config.Receive_Flag) //空闲中断标志
{
Uart2_Config.Receive_Flag=0; //清除空闲中断标志
HAL_UART_Transmit_DMA(&huart3, Uart2_Config.RxDMABuffer, Uart2_Config.RX_Length);
}
if(Uart3_Config.Receive_Flag) //空闲中断标志
{
Uart3_Config.Receive_Flag=0; //清除空闲中断标志
HAL_UART_Transmit_DMA(&huart2, Uart3_Config.RxDMABuffer, Uart3_Config.RX_Length);
}
}
}
你是指DMA 接收BUFFER溢出吗?
一般会有什么协议,我这个就是双向要求发送的比较快, 一般10ms定时互发
一周热门 更多>