【STM32】串列埠

史迪仔不壞發表於2021-02-04

一、 串列埠中斷使能問題

錯誤

串列埠只能接收一次資料,從串列埠助手發第二個資料時接收不到。

分析

在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兩個符號。

解決:

去勾選“傳送新行”即可。

 

相關文章