亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

STM32單片機如何處理QT上位機串口中發過來的數據?

STM32單片機如何處理QT上位機串口中發過來的數據?

慕雪6442864 2019-04-11 11:07:04
STM32單片機如何處理QT上位機串口中發過來的數據?
查看完整描述

3 回答

?
倚天杖

TA貢獻1828條經驗 獲得超3個贊

單片機有串口中斷。串口每收到1byte數據就會觸發1次接收中斷。中斷一般像下面這面,你可以根據自己的需求改。我的做法是中段里只管接收數據,然后定時器中監測一定時間內沒有收到數據,認為數據接收完畢,然后置位接受完成標志。在主函數中查詢這個標志,進行數據處理。

123456789101112131415161718192021222324void USART1_IRQHandler (void)//串口中斷{    u8 dat,flag = 0;    if(USART_GetFlagStatus(USART1, USART_FLAG_ORE) != RESET)    {        USART_ClearITPendingBit(USART1,USART_IT_ORE);         dat = USART_ReceiveData(USART1);        flag = 1;    }    if(USART_GetITStatus(USART1,USART_IT_RXNE)!= RESET)   //Receive Data register not empty interrupt.    {        USART_ClearITPendingBit(USART1,USART_IT_RXNE);        dat = USART_ReceiveData(USART1);        flag = 1;                }    if(flag == 1)    {        Uart1RecvOver.recvOver = 0;        if(PushInQueue_Q(&uart1RecvQueue, dat))            Uart1RecvOver.recvTimeCnt = 0;        else            Uart1RecvOver.recvTimeCnt = USART_RECV_END_TIME;     }}


查看完整回答
反對 回復 2019-04-15
?
jeck貓

TA貢獻1909條經驗 獲得超7個贊

單片機接收處理串口的數據的過程就是配置好波特率、位寬、校驗位等,收到數據 后可以引起中斷,也可以查詢標志位,然后進行相應的處理。
1) 串口時鐘使能,GPIO 時鐘使能。
2) 設置引腳復用器映射:調用 GPIO_PinAFConfig 函數。
3) GPIO 初始化設置:要設置模式為復用功能。
4) 串口參數初始化:設置波特率,字長,奇偶校驗等參數。
5) 開啟中斷并且初始化 NVIC,使能中斷(如果需要開啟中斷才需要這個步驟)。
6) 使能串口。
7) 編寫中斷處理函數:函數名格式為 USARTxIRQHandler(x 對應串口號)



查看完整回答
反對 回復 2019-04-15
?
慕尼黑8549860

TA貢獻1818條經驗 獲得超11個贊

串口通信是有協議的,所有操作都得按照協議來,和你用什么編譯器/編輯器或者框架無關,如何讀取數據要看你的單片機硬件了:
有串口->直接讀取寄存器的數據就行了,每次一個BYTE,一般該寄存器都命名為SBUF
無串口->需使用軟件模擬串口通信。

查看完整回答
反對 回復 2019-04-15
  • 3 回答
  • 0 關注
  • 1730 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號