緩沖區(qū)顧名思義是緩沖數據用的。實現緩沖區(qū)最簡單的辦法時,定義多個數組,接收一包數據到數組A,就把接收數據的地址換成數組B,每個數據有個標記字節(jié)用于表示這個數組是否收到數據,收到數據是否處理完成。
缺點:
①緩沖數據組數一定,且有多變量,代碼結構不太清晰。
②接收數據長度可能大于數組大小,也可能小于數組大小。不靈活,需要接收數據很長時容易出錯,且內存利用率低。
解決這個問題的好辦法是:環(huán)形緩沖區(qū)。
環(huán)形緩沖區(qū)簡介
環(huán)形緩沖區(qū)就是一個帶“頭指針”和“尾指針”的數組。在單片機中串口通信是我們使用最頻繁的,使用串口通信就會用到串口的數據接收與發(fā)送,環(huán)形緩沖區(qū)方式接收數據可以更好的保證數據丟幀率第。
在通信程序中,經常使用環(huán)形緩沖器作為數據結構來存放通信中發(fā)送和接收的數據。環(huán)形緩沖區(qū)是一個先進先出的循環(huán)緩沖區(qū),可以向通信程序提供對緩沖區(qū)的互斥訪問。
環(huán)形緩沖區(qū)的一個有用特性是:當一個數據元素被用掉后,其余數據元素不需要移動其存儲位置。相反,一個非圓形緩沖區(qū)(例如一個普通的隊列)在用掉一個數據元素后,其余數據元素需要向前搬移。換句話說,環(huán)形緩沖區(qū)適合實現先進先出緩沖區(qū),而非環(huán)形緩沖區(qū)適合后進先出緩沖區(qū)。
整合自:博客園、CSDN
編輯:jq
-
STM32
+關注
關注
2270文章
10900瀏覽量
356012
發(fā)布評論請先 登錄
相關推薦
評論