STM32F4 串口實驗中收不到超級終端發送的數據,調試工具卻能夠
我用串口精靈發送數據沒有問題。可是接收數據沒反應。
串口接受的時候必需要用中斷的。你發送僅僅靠單一的標誌位是能夠推斷的,可是接受的時候,你是一直停留在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]
STM32F4 串口實驗中收不到超級終端發送的數據,調試工具卻能夠