LL-395390 发表于 2012-11-23 11:00:51

STM32F207串口接收内容不全

处理器为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


请问为啥?谢谢。
另外还有个问题,感觉STM32的库函数USART_Receive或者Send这么写之后,我都搞不太清我通过串口收的具体内容是什么?不如写个buf接收后,在处理?谁能给我说下,该怎么处理?如果能有用数组接收内容的例程给我一份好吗?因为我通过串口收到的数据需要处理后再发送!

高山-404205 发表于 2012-12-1 12:46:33

回复:STM32F207串口接收内容不全

查询方式,不能保障重叠的问题。必须中断,或者DMA方式。
页: [1]
查看完整版本: STM32F207串口接收内容不全