This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

关于485通信,判断问题

因为程序收发有个控制脚,但发送结束后,要拉低控制脚,然后接收。但是在最后一个发送中断响应时,硬件实际还在发送(用这个语句while(ROM_UARTBusy(UART1_BASE));可以知道),这样怎么处理,发送接收都在中断里
/**********************************************************
串口1中断 HART6
**********************************************************/
void UART1_Handler(void)
{
uint32_t ui32Status;
uint8_t bt;

ui32Status = ROM_UARTIntStatus(UART1_BASE, true);
//获取中断状态 屏蔽中断状态

ROM_UARTIntClear(UART1_BASE, ui32Status);
//清除UART中断源


if((ui32Status == UART_INT_RX) || (ui32Status == UART_INT_RT))
{
while(ROM_UARTCharsAvail(UART1_BASE))
{
bt=ROM_UARTCharGetNonBlocking(UART1_BASE);//接收数据
//ROM_UARTCharPutNonBlocking(UART0_BASE, bt);
RCV_Hart(bt,5); //接收处理
}
}else if(ui32Status == UART_INT_TX)
{
if(SndFrmCnt[5]>uSndFrmCnt[5]) //发送数据
{

send_init(5);
ROM_GPIOPinWrite(GPIO_PORTB_BASE,GPIO_PIN_2,GPIO_PIN_2); //TXEN-1=1 接收
}else{


if(ROM_UARTSpaceAvail(UART1_BASE))
{
//bt=HartSndFrm[5][SndFrmCnt[5]++];
ROM_UARTCharPutNonBlocking(UART1_BASE, HartSndFrm[5][SndFrmCnt[5]++]);
//ROM_UARTCharPutNonBlocking(UART0_BASE, bt);
}
}



}

}