这是原子哥的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]
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>