1. 程式人生 > >STM32F4 串口實驗中收不到超級終端發送的數據,調試工具卻能夠

STM32F4 串口實驗中收不到超級終端發送的數據,調試工具卻能夠

末尾 printf msu popu 接收 sar col dsm 設置

我用串口精靈發送數據沒有問題。可是接收數據沒反應。

串口接受的時候必需要用中斷的。你發送僅僅靠單一的標誌位是能夠推斷的,可是接受的時候,你是一直停留在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("[email protected]
/* */\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 串口實驗中收不到超級終端發送的數據,調試工具卻能夠