STM32F207发送内容不全

[复制链接]
1912|3
 楼主| lqab1983 发表于 2012-11-22 16:15 | 显示全部楼层 |阅读模式
处理器为STM32F207,我的串口1初始化正常,其向PC上串口发送, printf("\r\ntest gprs start\n"); 调试助手正常。但是,我用调试助手向串口发送数据,却总是收不全,而且每次收到的不一样?为啥?我觉得我尽可能解决了好多问题。
不过,我不想让每次收到的数据都挨着,所以加了个换行语句USART_SendData(USART1 ,0xA);结果就不行了!

while (1)
    {
        /* 等待USART1接收数据完毕 */
          if(USART_GetFlagStatus(USART1 , USART_IT_RXNE) == SET)
         {
             /* 向串口发送接收到的数据 */
    USART_SendData(USART1 , USART_ReceiveData(USART1));
          /* 短延时,保证收发稳定性 */
       for(i = 0; i < 500; i ++);
   
    USART_SendData(USART1 ,0xA);
    for(i = 0; i < 500; i ++);
       while(USART_GetFlagStatus(USART1,USART_IT_TXE) == SET);
   }
  }

我发送的是abcdefgfgdfgdfgdfgdfgdfgdfg,但是收获结果为:
abcd
abcd
a
abcdefg
abcde
abcd

abcdefg
a


请问为啥?谢谢
IJK 发表于 2012-11-22 16:47 | 显示全部楼层
1.LZ表述不大清楚
2.用示波器来看
airwill 发表于 2012-11-22 16:48 | 显示全部楼层
/* 短延时,保证收发稳定性 */
恐怕就是这个 保证收发稳定性的操作导致数据的丢失
 楼主| lqab1983 发表于 2012-11-23 10:31 | 显示全部楼层
我把延时加长为2500、5000,更不行.原来不加这个换行语句时,板子接收串口发来的数据还是很正常的.只是数据总是练着收,不好看,我加了这个换行,就老是收不全了。为啥了?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

17

主题

53

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部