初中生
最后登录1970-1-1
在线时间 小时
注册时间2016-8-2
|
楼主 |
发表于 2016-9-14 15:14:28
|
显示全部楼层
假设从机端等待主机端发送命令,这条命令有5个字节,接收完毕后,将最后一个字节数据返回给主机。代码根据火哥的程序进行了修改,通过串口调试助手测试,发送一帧十六进制数据:01 02 03 04 05;此时就不能正常发送数据,必须要加延时;如果是利用定时发送一个字节(05H)处理,当串口调试助手发送字节为5时,接收到一个字节数据05H。求解,有什么可以替代延时吗?比如标志位判断什么的。
代码如下所示:
- while(1)
- {
- GPIO_ResetBits(mac485REDE_PORT,mac485REDE_PIN); //½øÈë½ÓÊÕģʽ
- do
- {
- while( USART_GetFlagStatus(USART2,USART_FLAG_RXNE)!= SET);//ÂÖѯֱµ½485½ÓÊÕµ½Êý¾Ý
- temp[cnt] = USART_ReceiveData(USART2);
- cnt++;
- }while(cnt<5);
- if(cnt >= 5)
- cnt = 0;
- GPIO_SetBits(mac485REDE_PORT,mac485REDE_PIN); //½øÈë·¢ËÍģʽ
- USART_SendData(USART2, temp[4]); //·¢ËÍÊý¾Ý
- while (USART_GetFlagStatus(USART2,USART_FLAG_TC) !=SET);//ÂÖѯֱµ½·¢ËÍÊý¾ÝÍê±Ï
- printf("\r\n·¢ËÍÊý¾Ý³É¹¦£¡\r\n");
- }
复制代码
|
|