/*************************************************** *函数名 :
*函数功能:RS485发送len个字节.
*函数输入:buf:发送区首地址
len:发送的字节数
*函数输出:无
****************************************************/
void RS485_Send_Data(u8 *buf,u8 len)
{
u8 t;
GPIO_SetBits(GPIOA,GPIO_Pin_0); //设置为发送模式
delay(0x1fff);
for(t=0;t<len;t++) //循环发送数据
{
USART_ClearFlag(USART2,USART_FLAG_TC);
USART_SendData(USART2,buf[t]);
while(USART_GetFlagStatus(USART2, USART_FLAG_TC) == RESET);
}
while(USART_GetFlagStatus(USART2, USART_FLAG_TC) == RESET);
//RS485_RX_CNT=0;
GPIO_ResetBits(GPIOA,GPIO_Pin_0); //设置为接收模式
}
主机给从机发送命令数据帧,从机根据命令帧,向主机回传响应帧,但是主机接受的数据时错位的。
应答帧接收成功!从机地址为:0x1
从机地址为:0x1
从机地址为:0x88
从机地址为:0x27
从机地址为:0x41
从机地址为:0x2
从机地址为:0x1
应答帧接收成功!从机地址为:0x1
从机地址为:0x1
从机地址为:0x1
从机地址为:0x88
从机地址为:0x27
从机地址为:0x41
从机地址为:0x2
求大神指导!!!万分感激! |