搞微控制器,肯定少不了串列埠的使用,不管是除錯也好,與其他裝置通訊也好,是我們不可或缺的利器。接下來就分享一下本人在專案中使用串列埠接收資料及處理的方法。
先介紹下主要思路,首先需要開乙個定時器,我們接收串列埠端發來的資料,這個時候會產生接收中斷,在中斷裡面我們做三件事,1.啟動定時器;2.清除時間計數器;3.接收資料存放到事先定義好的快取buffer;然後我們在定時器中斷裡面也做三件事:1.累加時間計數器;2.判斷時間計數器是否超過我們設定的閾值(超過,說明等待了一段時間沒有收到資料,判定資料接收完畢,具體時間是具體情況而定)3.判定接收完畢資料之後,清除計數器,處理接收資料的buffer,清除buffer,關閉定時器;這是主要思路,也是最為重要的部分,最後給出我的**,可以移植到任何處理器上面,非常實用。這裡在強調一下定時器的問題,我們有兩種用法,一是,需要用到定時器就開啟,不用就關閉,上面介紹的思路是這種使用方法;二是,開啟定時器之後不關閉,讓其一直執行,這樣的好處是我們可以用乙個定時器處理多個串列埠通訊問題,當做乙個時基,因為實際專案中很多情況都是同時會使用多個串列埠;下面我給的**用的是第二種方法,了解了思路其實是很簡單的事情。
串列埠資料結構體:
處理介面函式
串列埠中斷處理
定時器中的資料處理,裡面只是把接收到的資料原封不動傳回去,使用send_str()函式,在此地方大家可以加入自己資料處理的方法
上述介面函式的具體實現
mysql萬能 Mysql的萬能優化方法
在命令列執行 1.檢視優化器狀態 show variable like optimizer trace 2.會話級別臨時開啟 set session optimizer trace enabled on end markers in json on 3.設定優化器追蹤的記憶體大小 set optim...
matlab 萬能實用的非線性曲線擬合方法
在科學計算和工程應用中,經常會遇到需要擬合一系列的離散資料,最近找了很多相關的文章方法,在這裡進行總結一下其中 最完整 幾乎能解決所有離散引數非線性擬合的方法 第一步 得到散點資料 根據你的實際問題得到一系列的散點 例如 x 3.2,3.6,3.8,4,4.2,4.8,5,5.4,6.2,6.4,6...
matlab 萬能實用的非線性曲線擬合方法
網路 在科學計算和工程應用中,經常會遇到需要擬合一系列的離散資料,最近找了很多相關的文章方法,在這裡進行總結一下其中 最完整 幾乎能解決所有離散引數非線性擬合的方法 第一步 得到散點資料 根據你的實際問題得到一系列的散點 例如 x 3.2,3.6,3.8,4,4.2,4.8,5,5.4,6.2,6....