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