精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于環形隊列的串口打印阻塞解決方法

汽車玩家 ? 來源:單片機軟件工程師 ? 作者:單片機軟件工程師 ? 2020-01-22 09:47 ? 次閱讀

隊列(FIFO)是一種常見的線性存儲結構,在嵌入式開發中經常用到,主要的應用場景有:

1. 高級一點的單片機內部串行通信模塊,像UART、SPI、CAN等串行通信,內部帶有FIFO緩存。有FIFO的模塊可以一次寫入或保存多個數據,而沒有FIFO的模塊只可以寫入或保存一個數據。

2. 在RTOS中,可以通過消息隊列實現任務(線程)間的通信

3. 解決CPU與外設由于速度差導致的阻塞

基于環形隊列的串口打印阻塞解決方法

寫數據索引write,讀數據索引read,數據個數為write-read,普通隊列寫索引永遠不小于讀索引。但我們可利用的棧內存是有限的。

一種優化的隊列是環形隊列,也可以理解為首尾相連的隊列。當寫索引到達最大分配內存時,跳回到隊列的頭部繼續寫入,數據個數為(write+BUFFER_SIZE-read)%BUFFER_SIZE。

基于環形隊列的串口打印阻塞解決方法

下面以使用環形隊列來解決單片機串口打印阻塞問題為例來說明軟件實現。

基于環形隊列的串口打印阻塞解決方法

基于環形隊列的串口打印阻塞解決方法

基于環形隊列的串口打印阻塞解決方法

基于環形隊列的串口打印阻塞解決方法

上面代碼已經注釋得夠詳細了,就不再描述了。

在需要打印數據時,直接調用printf函數格式化打印,在主函數大循環中執行debug_print_task就可以了。

基于環形隊列的串口打印阻塞解決方法

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • cpu
    cpu
    +關注

    關注

    68

    文章

    10829

    瀏覽量

    211194
  • fifo
    +關注

    關注

    3

    文章

    387

    瀏覽量

    43561
  • 串口
    +關注

    關注

    14

    文章

    1547

    瀏覽量

    76231
收藏 人收藏

    評論

    相關推薦

    基于STM32的串口環形隊列IAP調試

    基于STM32的串口環形隊列IAP調試心得
    的頭像 發表于 09-18 15:33 ?1430次閱讀
    基于STM32的<b class='flag-5'>串口</b><b class='flag-5'>環形</b><b class='flag-5'>隊列</b>IAP調試

    請問串口接受用環形隊列,發送也能用嗎?

    串口接受用環形隊列,發送也可以用?發送用普通的中斷也可以
    發表于 05-07 07:56

    環形隊列串口數據接收中的使用

    前言??書接上回,前文主要介紹了環形隊列的實現原理以及C語言實現及測試過程,本文將回歸到嵌入式平臺的應用中,話不多說,淦,上干貨!實驗目的HAL庫下串口的配置及使用環形
    發表于 12-06 06:27

    如何使用隊列實現STM32串口環形緩沖?

    串口環形緩沖的好處是什么?如何使用隊列實現STM32串口環形緩沖?
    發表于 12-07 07:13

    基于stm32串口環形緩沖隊列處理機制是什么

    基于stm32串口環形緩沖隊列處理機制是什么
    發表于 12-08 07:06

    實現隊列環形緩沖的方法

    串口隊列環形緩沖區隊列串口環形緩沖的好處代碼實現隊列
    發表于 02-21 07:11

    環形隊列的相關資料分享

    前言??當代碼,不再是簡單的完成需求,對代碼進行堆砌,而是開始思考如何寫出優美代碼的時候,我們的代碼水平必然會不斷提升,今天,咱們來學習環形隊列結構。環形隊列的基本概念??相信對數據結
    發表于 02-23 06:10

    聊一聊串口環形隊列常用的幾種方法

    ,必須通過標志位判斷上一個包數據是否發送完成,在把新的數據覆蓋到串口的緩沖區。DMA方式優點: 不占用系統資源,減少CPU對中斷的響應。如何不建立數據包的隊列,還是會出現,需要等待阻塞的問題。
    發表于 07-21 15:17

    cubeMX+STM32+Freertos 讀隊列阻塞

    隊列阻塞本例內容是創建一個隊列,由多個任務往隊列中寫數據,以及從隊列中把數據讀出。這個隊列
    發表于 12-09 15:21 ?10次下載
    cubeMX+STM32+Freertos 讀<b class='flag-5'>隊列</b>時<b class='flag-5'>阻塞</b>

    FreeRTOS+STM32F103串口通信錯誤解決方法

    在調試FreeRTOS系統時,在串口中斷中用隊列存儲數據,然后再定時器中斷中用隊列接收數據,并通過串口打印出來。在調試代碼中編譯器報錯。在網
    發表于 12-24 18:45 ?11次下載
    FreeRTOS+STM32F103<b class='flag-5'>串口</b>通信錯誤<b class='flag-5'>解決方法</b>

    STM32串口環形緩沖--使用隊列實現(開放源碼)

    串口隊列環形緩沖區隊列串口環形緩沖的好處代碼實現隊列
    發表于 12-24 19:04 ?28次下載
    STM32<b class='flag-5'>串口</b><b class='flag-5'>環形</b>緩沖--使用<b class='flag-5'>隊列</b>實現(開放源碼)

    基于STM32的串口環形隊列IAP調試心得

    使用環形隊列,簡單點說就是個環形數組,一邊接收上位機數據,一邊往flash里面寫。
    發表于 02-08 15:22 ?5次下載
    基于STM32的<b class='flag-5'>串口</b><b class='flag-5'>環形</b><b class='flag-5'>隊列</b>IAP調試心得

    嵌入式環形隊列和消息隊列的實現

    嵌入式環形隊列和消息隊列是實現數據緩存和通信的常見數據結構,廣泛應用于嵌入式系統中的通信協議和領域。
    的頭像 發表于 04-14 11:52 ?1519次閱讀

    以太網阻塞的常見原因與解決方法

    以太網阻塞的常見原因與解決方法 以太網阻塞是指在以太網中數據流量增加超過網絡設備處理能力的情況下,導致網絡性能下降、延遲增加、丟包率上升等問題。下面將詳細討論以太網阻塞的常見原因及
    的頭像 發表于 12-27 13:58 ?1206次閱讀

    嵌入式環形隊列與消息隊列的實現原理

    嵌入式環形隊列,也稱為環形緩沖區或循環隊列,是一種先進先出(FIFO)的數據結構,用于在固定大小的存儲區域中高效地存儲和訪問數據。其主要特點包括固定大小的數組和兩個指針(頭指針和尾指針
    的頭像 發表于 09-02 15:29 ?356次閱讀