一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀(guān)看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

緩沖區(qū)是啥意思 STM32串口數(shù)據(jù)接收之環(huán)形緩沖區(qū)

ss ? 來(lái)源:博客園、CSDN ? 作者:Fireflycjd、IT_阿水 ? 2021-07-22 15:33 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

緩沖區(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ū)的互斥訪(fǎng)問(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ù)元素需要向前搬移。換句話(huà)說(shuō),環(huán)形緩沖區(qū)適合實(shí)現(xiàn)先進(jìn)先出緩沖區(qū),而非環(huán)形緩沖區(qū)適合后進(jìn)先出緩沖區(qū)。

整合自:博客園、CSDN

編輯:jq

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀(guān)點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • STM32
    +關(guān)注

    關(guān)注

    2293

    文章

    11032

    瀏覽量

    364999
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    如何清除CYUSB3014的緩沖區(qū)數(shù)據(jù)?USB接口數(shù)據(jù)什么時(shí)候發(fā)送到電腦?

    、如何清除GPIF II接口處對(duì)應(yīng)的DMA BUFFER數(shù)據(jù)?當(dāng)標(biāo)志設(shè)置為滿(mǎn)/非滿(mǎn)狀態(tài)時(shí),一旦 DMA 緩沖區(qū)已滿(mǎn),標(biāo)志信號(hào)就會(huì)指示它已滿(mǎn)。清除DMA緩沖區(qū)數(shù)據(jù)后,相應(yīng)的標(biāo)志信號(hào)會(huì)改變
    發(fā)表于 07-18 07:58

    請(qǐng)問(wèn)USB緩沖區(qū)數(shù)據(jù)可以多次取嗎?

    在使用USB軟件獲取數(shù)據(jù)是,下位機(jī)給我發(fā)送了13個(gè)32位數(shù)據(jù)到USB IN緩沖區(qū),為什么我調(diào)用API函數(shù)想要第一次取1個(gè)32位數(shù)據(jù),取完之后再取12位
    發(fā)表于 07-16 08:12

    【RA4L1-SENSOR】串口收發(fā) + 環(huán)形緩沖區(qū)

    )%MAX_BUFFER_LEN;//防止尾部越界 uart_queue.len++;//環(huán)形緩沖區(qū)數(shù)據(jù)長(zhǎng)度 return QUEUE_SUCCESS; } static QUEUE queue_read(uint8_t
    發(fā)表于 06-11 10:24

    FX3 Socket緩沖區(qū)切換的最大時(shí)間是多少?

    DMA 描述符時(shí)發(fā)送數(shù)據(jù),則這種簡(jiǎn)單的方案會(huì)導(dǎo)致數(shù)據(jù)丟失,通常需要 1 微秒?!?(第 18 頁(yè)) 您能告訴我緩沖區(qū)切換的確切最大時(shí)間嗎?這對(duì)于我們連接到 FX3 GPIF 接口的 ASIC 芯片的
    發(fā)表于 05-16 07:51

    在傳輸DMA通道中的所有緩沖區(qū)后,DMA標(biāo)志(就緒和部分)被卡住了是怎么回事?

    2 次傳輸,再次卡住的時(shí)間更短,然后順利傳輸數(shù)據(jù)。 Buffers working until they get stuck緩沖器在卡住之前一直在工作 前兩個(gè)緩沖區(qū)的標(biāo)志 A(上)和 B(下),然后
    發(fā)表于 05-16 07:18

    求助,關(guān)于3014的緩沖區(qū)設(shè)置疑問(wèn)求解

    和數(shù)量改為34kb,6。rgb24 1080p@60fps無(wú)法出圖? dma緩沖區(qū)大小和數(shù)量是否有什么說(shuō)法嗎?需要對(duì)應(yīng)? fx3可用的dma大小為多少? 根據(jù)usbcap抓取數(shù)據(jù)以及demo來(lái)看
    發(fā)表于 05-06 13:42

    請(qǐng)問(wèn)如何在Linux中使用幀緩沖區(qū)更新epdc顯示?

    我正在使用帶有 epdc 顯示子卡 (IMXEBOOKDC5) 的 IMX8ULP EVK。使用 Linux 映像引導(dǎo)后,epdc 顯示無(wú)法使用幀緩沖區(qū)進(jìn)行更新。當(dāng)檢查顯示 pmic 的電源使能引腳
    發(fā)表于 04-01 06:41

    FreeRTOS進(jìn)階使用之流緩沖區(qū):高效處理字節(jié)流的秘密武器

    在嵌入式開(kāi)發(fā)中,流緩沖區(qū)(Stream Buffer)是FreeRTOS中用于高效處理字節(jié)流數(shù)據(jù)傳輸?shù)暮诵臋C(jī)制,尤其適合任務(wù)間或中斷與任務(wù)間的連續(xù)數(shù)據(jù)傳輸場(chǎng)景(如串口通信、網(wǎng)絡(luò)
    發(fā)表于 03-24 11:37

    L9663如何使用上行緩沖區(qū)發(fā)送同步脈沖?

    我根據(jù)L9663 Datasheet這個(gè)手冊(cè),想使用這個(gè)配置“通過(guò)帶有上行數(shù)據(jù)緩沖區(qū)的SPI觸發(fā)。微控制器發(fā)送相應(yīng)的SPI命令以發(fā)送同步脈沖。然后,同步脈沖觸發(fā)發(fā)生器根據(jù)上行數(shù)據(jù)緩沖區(qū)
    發(fā)表于 03-13 08:15

    RTOS的流緩沖區(qū)機(jī)制解析

    SAFERTOS中的流緩沖區(qū)(Stream buffer)機(jī)制,可以實(shí)現(xiàn)任務(wù)到任務(wù)或中斷到任務(wù)之間的通信。字節(jié)流是由發(fā)送方寫(xiě)入緩沖區(qū),接收方讀取緩沖區(qū)
    的頭像 發(fā)表于 02-14 11:33 ?543次閱讀
    RTOS的流<b class='flag-5'>緩沖區(qū)</b>機(jī)制解析

    AMD Zen 4處理器悄然禁用循環(huán)緩沖區(qū)

    近日,AMD在更新BIOS后,對(duì)Zen 4架構(gòu)的處理器進(jìn)行了一項(xiàng)未公開(kāi)說(shuō)明的更改:禁用了循環(huán)緩沖區(qū)(Loop Buffer)功能。這一變化引發(fā)了業(yè)界和用戶(hù)的廣泛關(guān)注。 循環(huán)緩沖區(qū)作為CPU前端的一個(gè)
    的頭像 發(fā)表于 12-11 13:46 ?544次閱讀

    分享一個(gè)嵌入式通用FIFO環(huán)形緩沖區(qū)實(shí)現(xiàn)庫(kù)

    開(kāi)源項(xiàng)目ringbuff ,是一款通用FIFO環(huán)形緩沖區(qū)實(shí)現(xiàn)的開(kāi)源庫(kù),作者M(jìn)aJerle,遵循 MIT 開(kāi)源許可協(xié)議。
    的頭像 發(fā)表于 10-23 16:20 ?1178次閱讀
    分享一個(gè)嵌入式通用FIFO<b class='flag-5'>環(huán)形</b><b class='flag-5'>緩沖區(qū)</b>實(shí)現(xiàn)庫(kù)

    內(nèi)存緩沖區(qū)和內(nèi)存的關(guān)系

    內(nèi)存緩沖區(qū)和內(nèi)存之間的關(guān)系是計(jì)算機(jī)體系結(jié)構(gòu)中一個(gè)至關(guān)重要的方面,它們共同協(xié)作以提高數(shù)據(jù)處理的效率和系統(tǒng)的整體性能。
    的頭像 發(fā)表于 09-10 14:38 ?1232次閱讀

    單片機(jī)中的幾種環(huán)形緩沖區(qū)的分析和實(shí)現(xiàn)

    單片機(jī)中的幾種環(huán)形緩沖區(qū)的分析和實(shí)現(xiàn)一、簡(jiǎn)介環(huán)形緩沖區(qū)(RingBuffer)是一種高效的使用內(nèi)存的方法,它將一段固定長(zhǎng)度的內(nèi)存看成一個(gè)環(huán)形
    的頭像 發(fā)表于 08-14 08:39 ?1765次閱讀
    單片機(jī)中的幾種<b class='flag-5'>環(huán)形</b><b class='flag-5'>緩沖區(qū)</b>的分析和實(shí)現(xiàn)

    esp32-s3 uvc攝像頭緩沖區(qū)溢出是什么原因呢?

    板子是esp32-s3 n8r8 使用的是ESP IDF VSCode 擴(kuò)展版本 v1.8.0 遇到的問(wèn)題是,在改變分辨率時(shí)候(增大or減?。┒紩?huì)遇到提示緩沖區(qū)溢出的情況,我嘗試過(guò)增大緩沖區(qū)的內(nèi)存分配,然而問(wèn)題還是沒(méi)有得到解決。 請(qǐng)問(wèn)這是什么原因呢
    發(fā)表于 07-19 07:35