因为RS485总线是半双工的,所以通常在使用时发送数据都做延时,这样就会导致切换到接收时丢失数据。可是只要使用串口的USART_IT_TC中断,就能很好地解决该问题。
在串口初始化使能USART_IT_TC
USART_ITConfig(UART5, USART_IT_TC, ENABLE);//使能USART 发送完成中断
在中断做RX切换
void UART5_IRQHandler(void)
{
if(USART_GetITStatus(UART5, USART_IT_TC) != RESET)//接收中断
{
ControlRs485(RX_STATE);
USART_ClearITPendingBit(UART5, USART_IT_TC);
}
}