很多初学者都知道探索者开发板,里面有很多的代码资源,在485通讯这一章内,我在调用原函数的时候发现了个问题,从机返回的数据包在主机接收端少了一个包头,即一个字节的数据,本人参考的是库函数版的代码,通过修改一下代码可以解决该问题:
void RS485_Send_Data(u8 *buf,u8 len)
{
u8 t;
GPIO_SetBits(GPIOD,GPIO_Pin_10);
for(t=0;t<len;t++)
{
while(USART_GetFlagStatus(USART3,USART_FLAG_TC)==RESET);
USART_SendData(USART3,buf[t]); //·¢ËÍÊý¾Ý
}
// while(USART_GetFlagStatus(USART3,USART_FLAG_TC)==RESET);
GPIO_ResetBits(GPIOD,GPIO_Pin_10);
}
将while(USART_GetFlagStatus(USART3,USART_FLAG_TC)==RESET); 注释即可解决,该语句等待状态,没有及时将485切换到接收状态,数据可能接收不完整