緩沖區(qū)顧名思義是緩沖數(shù)據(jù)用的。實現(xiàn)緩沖區(qū)最簡單的辦法時,定義多個數(shù)組,接收一包數(shù)據(jù)到數(shù)組A,就把接收數(shù)據(jù)的地址換成數(shù)組B,每個數(shù)據(jù)有個標記字節(jié)用于表示這個數(shù)組是否收到數(shù)據(jù),收到數(shù)據(jù)是否處理完成。
缺點:
①緩沖數(shù)據(jù)組數(shù)一定,且有多變量,代碼結(jié)構不太清晰。
②接收數(shù)據(jù)長度可能大于數(shù)組大小,也可能小于數(shù)組大小。不靈活,需要接收數(shù)據(jù)很長時容易出錯,且內(nèi)存利用率低。
解決這個問題的好辦法是:環(huán)形緩沖區(qū)。
環(huán)形緩沖區(qū)簡介
環(huán)形緩沖區(qū)就是一個帶“頭指針”和“尾指針”的數(shù)組。在單片機中串口通信是我們使用最頻繁的,使用串口通信就會用到串口的數(shù)據(jù)接收與發(fā)送,環(huán)形緩沖區(qū)方式接收數(shù)據(jù)可以更好的保證數(shù)據(jù)丟幀率第。
在通信程序中,經(jīng)常使用環(huán)形緩沖器作為數(shù)據(jù)結(jié)構來存放通信中發(fā)送和接收的數(shù)據(jù)。環(huán)形緩沖區(qū)是一個先進先出的循環(huán)緩沖區(qū),可以向通信程序提供對緩沖區(qū)的互斥訪問。
環(huán)形緩沖區(qū)的一個有用特性是:當一個數(shù)據(jù)元素被用掉后,其余數(shù)據(jù)元素不需要移動其存儲位置。相反,一個非圓形緩沖區(qū)(例如一個普通的隊列)在用掉一個數(shù)據(jù)元素后,其余數(shù)據(jù)元素需要向前搬移。換句話說,環(huán)形緩沖區(qū)適合實現(xiàn)先進先出緩沖區(qū),而非環(huán)形緩沖區(qū)適合后進先出緩沖區(qū)。
整合自:博客園、CSDN
編輯:jq
-
STM32
+關注
關注
2312文章
11189瀏覽量
374514
發(fā)布評論請先 登錄
C語言的緩沖區(qū)(緩存)詳解
CW32L052串口的緩沖區(qū)機制
飛凌嵌入式ElfBoard-標準IO接口之設置緩沖區(qū)
【道生物聯(lián)TKB-623評估板試用】+3、模塊深度測評:高頻率數(shù)據(jù)傳輸?shù)?b class='flag-5'>緩沖區(qū)陷阱與優(yōu)化方案
移植的lvgl,在運行的時候,緩沖區(qū)無法釋放怎么解決?
如何清除CYUSB3014的緩沖區(qū)數(shù)據(jù)?USB接口數(shù)據(jù)什么時候發(fā)送到電腦?
請問USB緩沖區(qū)取數(shù)據(jù)可以多次取嗎?
【RA4L1-SENSOR】串口收發(fā) + 環(huán)形緩沖區(qū)
解析RZ/N2L CANFD模塊的緩沖區(qū)機制(2)
解析RZ/N2L CANFD模塊的緩沖區(qū)機制(1)
緩沖區(qū)是啥意思 STM32串口數(shù)據(jù)接收之環(huán)形緩沖區(qū)
評論