在线时间4 小时
UID395390
ST金币0
蝴蝶豆0
注册时间2012-10-17
初级会员
- 最后登录
- 2019-7-25
|
a0a.1 0b0c
处理器为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[SIZE]接收后,在处理?谁能给我说下,该怎么处理?如果能有用数组接收内容的例程给我一份好吗?因为我通过串口收到的数据需要处理后再发送! |
|