485通信程序疑问

2019-07-21 00:13发布

这是原子哥的485发送程序:
void RS485_Send_Data(u8 *buf,u8 len)
{
        u8 t;
        RS485_TX_EN=1;                       
          for(t=0;t<len;t++)       
        {
                while((USART2->SR&0X40)==0);        //等待发送结束  
                USART2->DR=buf[t];
        }         
        while((USART2->SR&0X40)==0);       
        RS485_RX_CNT=0;          
        RS485_TX_EN=0;                                                       
}
其中下面这两句是不是应该调换一下位置
while((USART2->SR&0X40)==0);        //等待发送结束  
USART2->DR=buf[t];
应该是先发送才能判断到底有没有发送完成啊,如果while((USART2->SR&0X40)==0);这句在前面的话,岂不是一直卡在这里出不去了,SR寄存器的第六位TC是要在发送完一帧数据且TXE=1时硬 置1,如果那句放在前面 ,TC不是永远都是零
[img]file:///C:UsersAdministratorAppDataRoamingTencentUsers296417781QQWinTempRichOle~UI3}{4[SOS7L@R$0}T3$8X.png[/img]



友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。