码迷,mamicode.com
首页 > 其他好文 > 详细

STM32F4 串口实验中收不到超级终端发送的数据,调试工具却可以

时间:2015-08-18 19:25:46      阅读:251      评论:0      收藏:0      [点我收藏+]

标签:

  我用串口精灵发送数据没有问题,但是接收数据没反应。

串口接受的时候必须要用中断的,你发送只靠单一的标志位是可以判断的,但是接受的时候,你是一直停留在while里面,我们判断接受是否完成,通过检测是否收到0x0D、0x0A的连续来检测是否结束。当检测到这个结束序列后,就会置位USART_RX_STA的最高位来标记已经会搜到一次数据。之后等待外部函数清空才可以第二次接受。

修改:超级终端发送设置,以换行作为发送末尾,OK

while(1)
	{
		if(USART_RX_STA&0x8000)
		{					   
			len=USART_RX_STA&0x3fff;//μ?μ?′?′??óê?μ?μ?êy?Y3¤?è
			printf("\r\n?ú·¢?íμ????¢?a:\r\n");
			for(t=0;t<len;t++)
			{
				USART_SendData(USART1, USART_RX_BUF[t]);         //?ò′®?ú1·¢?íêy?Y
				while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);//μè′y·¢?í?áê?
			}
			printf("\r\n\r\n");//2?è???DD
			USART_RX_STA=0;
		}else
		{
			times++;
			if(times%5000==0)
			{
				printf("\r\nALIENTEK ì??÷??STM32F407?a·¢°? ′®?úêμ?é\r\n");
				printf("?yμ??-×ó@ALIENTEK\r\n\r\n\r\n");
			}
			if(times%200==0)printf("??ê?è?êy?Y,ò???3μ?ü?áê?\r\n");  
			if(times%30==0)LED0=!LED0;//éá??LED,ìáê??μí3?y?ú??DD.
			delay_ms(10);   
		}
	}


版权声明:本文为博主原创文章,未经博主允许不得转载。

STM32F4 串口实验中收不到超级终端发送的数据,调试工具却可以

标签:

原文地址:http://blog.csdn.net/mao0514/article/details/47755217

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!