本帖最后由 svenyang 于 2016-10-11 08:57 编辑
最近在调F0和温控器的串口通信,遇到一个问题,那就是怎样不通过中断连续读取温控器返回的字符串,代码如下:
for(i=0;TxBuf2!='\0';i++)
{
USART_SendData(USART2,TxBuf2);
while(USART_GetFlagStatus(USART2, USART_FLAG_TC)==RESET);
}
i=0;
while(USART_GetFlagStatus(USART2, USART_FLAG_RXNE)==SET)//利用接收标志位来循环接收字符
{
if((USART_ReceiveData(USART2)==0x0A) || (USART_ReceiveData(USART2)==0x0D))
{
i=0;
USART_ClearFlag(USART2,USART_FLAG_RXNE);
}
else
{
USART_ClearFlag(USART2,USART_FLAG_RXNE);//清除当前字符的标志位
RxBuf2{i} =USART_ReceiveData(USART2);
i++;
while(USART_GetFlagStatus(USART2, USART_FLAG_RXNE)==RESET);//等待下一个字符的标志位
}
}
以上发送并接受返回字符串并存在RxBuf[20]里面,却发现一直只能收到第一个字符,后面全部收不到。
有人说此类一般是读取速度太慢了,但是貌似这段程序已经是很精简了,难道是F0的主频太低,温控器主频太高导致的? |