一、 串列埠中斷使能問題
錯誤:
串列埠只能接收一次資料,從串列埠助手發第二個資料時接收不到。
分析:
在UART_Receive_IT(huart)函式裡,回撥函式的上面有如下程式碼:
這幾行程式碼的作用是關閉串列埠接收中斷,也就是說,在一次串列埠中斷接收過程的最後,即串列埠接收完一組資料之後會關閉串列埠接收中斷。
解決:
在回撥函式中實現接收到資料之後的操作(比如處理資料)並再次使能串列埠接收中斷。
總結:
串列埠中斷接收用法:
(1)指定一個快取區(串列埠接收到的資料會全部堆到這個快取區)
(2)使能串列埠接收中斷,並把快取區對應到串列埠
(3)在回撥函式中實現接收到資料之後的操作(比如處理資料)並再次使能串列埠接收中斷。
串列埠接收的流程:
(1)串列埠一個接一個的接收到資料填充到快取區
(2)快取區滿(大小是使用者定義的)程式幾經輾轉最後會呼叫到回撥函式。
(3)執行使用者在回撥函式中實現的功能。
參考連結:
https://www.cnblogs.com/dongxiaodong/p/14275284.html
二、串列埠助手配置問題
錯誤:
從串列埠助手傳送1個資料,經過取反後再次傳送到上位機,得到了3個資料,且多的資料是F2和F5。
分析:
F2和F5的原資料是0A和0D,其對應的ASCII分別是換行符和回車符。這是由於我們在串列埠助手中勾選了“傳送新行”,因此每次從上位機向微控制器傳送1個資料後,串列埠助手會自動換行,即加上\n和\r兩個符號。
解決:
去勾選“傳送新行”即可。