打印

STM32F207发送内容不全

[复制链接]
1324|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

粉丝