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

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

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

FreeRTOS消息隊列結(jié)構(gòu)體

麥辣雞腿堡 ? 來源:嵌入式Linux系統(tǒng)開發(fā) ? 作者:嵌入式Linux系統(tǒng)開 ? 2023-07-06 17:03 ? 次閱讀

有一個結(jié)構(gòu)體用于描述隊列,叫做 Queue_t,這個結(jié)構(gòu)體在文件 queue.c 中定義。

3、隊列創(chuàng)建

在使用隊列之前必須先創(chuàng)建隊列,有兩種創(chuàng)建隊列的方法,一種是靜態(tài)的,使用函數(shù)xQueueCreateStatic();另一個是動態(tài)的,使用函數(shù)

xQueueCreate()。這兩個函數(shù)本質(zhì)上都是宏,真正完成隊列創(chuàng)建的函數(shù)是 xQueueGenericCreate()和

xQueueGenericCreateStatic(),這兩個函數(shù)在文件 queue.c 中定義。

函數(shù) prvInitialiseNewQueue() 用于隊列的初始化,此函數(shù)在文件 queue.c 中定義。

函數(shù) prvInitialiseNewQueue()中調(diào)用了函數(shù) xQueueGenericReset()來復(fù)位隊列。

比如我們創(chuàng)建一個有 4 個隊列項,每個隊列項長度為 32 個字節(jié)的隊列 TestQueue,創(chuàng)建成功的隊列如圖所示:

圖片

在創(chuàng)建的時候需要指定此隊列的用途,也就是隊列類型,一共有六種類型:

queueQUEUE_TYPE_BASE 普通的消息隊列

queueQUEUE_TYPE_SET 隊列集

queueQUEUE_TYPE_MUTEX 互斥信號

queueQUEUE_TYPE_COUNTING_SEMAPHORE 計數(shù)型信號量

queueQUEUE_TYPE_BINARY_SEMAPHORE 二值信號量

queueQUEUE_TYPE_RECURSIVE_MUTEX 遞歸互斥信號量

4、向隊列發(fā)送消息

FreeRTOS 提供了 8 個向隊列發(fā)送消息的 API 函數(shù):

圖片

5、隊列上鎖和解鎖

隊列的上鎖和解鎖是兩個 API 函數(shù):prvLockQueue()和 prvUnlockQueue()。

6、從隊列讀取消息

有入隊就有出隊,出隊就是從隊列中獲取隊列項(消息),F(xiàn)reeRTOS 中出隊函數(shù)如表示:

具體的函數(shù)用法大家可以在用到的時候百度,這里就不詳細(xì)介紹了,大家知道有這些東西就行。其中最重要的是任務(wù)級和中斷級不一樣,在中斷處理函數(shù)中是由一套自己的

API 用的。

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

    關(guān)注

    5059

    文章

    18975

    瀏覽量

    302069
  • FreeRTOS
    +關(guān)注

    關(guān)注

    12

    文章

    483

    瀏覽量

    61918
  • 結(jié)構(gòu)體
    +關(guān)注

    關(guān)注

    1

    文章

    129

    瀏覽量

    10824
收藏 人收藏

    評論

    相關(guān)推薦

    基于FreeRTOS的STM32F103系統(tǒng)—隊列

    FreeRTOS中,隊列是實現(xiàn)任務(wù)之間同步、互斥和通信的一種重要方法(其他的實現(xiàn)方法有:任務(wù)通知、事件組、信號量、互斥量)。
    的頭像 發(fā)表于 11-10 11:37 ?1079次閱讀
    基于<b class='flag-5'>FreeRTOS</b>的STM32F103系統(tǒng)—<b class='flag-5'>隊列</b>

    FreeRTOS使用隊列怎么發(fā)送一個結(jié)構(gòu)呢?

    怎么使用隊列,發(fā)送一個12個字節(jié)的結(jié)構(gòu)呢? osEvent osMessageGet (osMessageQId queue_id, uint32_t millisec
    發(fā)表于 04-17 07:35

    轉(zhuǎn):第20章 FreeRTOS消息隊列

    第20章FreeRTOS消息隊列 本章節(jié)為大家講解FreeRTOS的一個重要的通信機制----消息隊列,初學(xué)者要熟練掌握,因為消息隊列在實際
    發(fā)表于 09-04 14:41

    請問如何用隊列結(jié)構(gòu)實體,而非指針傳遞?

    我這個小型應(yīng)用來說,可以接收。但是發(fā)現(xiàn)隊列取出的數(shù)據(jù)不對,是什么原因?如何用消息隊列傳傳結(jié)構(gòu)實體,而不是指針?
    發(fā)表于 06-17 09:01

    FreeRTOS創(chuàng)建消息隊列問題如何解決

    剛開始學(xué)習(xí)FreeRTOS,用的是STM32F103RCT6,目前創(chuàng)建了三個任務(wù),運行指示燈、按鍵、顯示。其中顯示任務(wù)里是暫時還沒有具體的代碼,按鍵任務(wù)準(zhǔn)備使用隊列傳遞按鍵值?,F(xiàn)在的問題是這樣
    發(fā)表于 07-19 08:03

    FreeRTOS中的隊列如何使用?

    FreeRTOS中的隊列如何使用?
    發(fā)表于 12-09 06:24

    FreeRTOS消息隊列有何作用

    FreeRTOS消息隊列 & ESP32實戰(zhàn)FreeRTOS消息隊列FreeRTOS的消息隊列
    發(fā)表于 01-27 06:53

    消息隊列傳遞結(jié)構(gòu)指針和結(jié)構(gòu)異同

    FreeRTOS消息隊列 傳遞結(jié)構(gòu)指針和結(jié)構(gòu)異同1 消息
    發(fā)表于 02-11 07:02

    FreeRTOS消息隊列 & ESP32使用

    FreeRTOS消息隊列 & ESP32實戰(zhàn)FreeRTOS消息隊列FreeRTOS的消息隊列
    發(fā)表于 12-03 17:51 ?1次下載
    <b class='flag-5'>FreeRTOS</b>消息<b class='flag-5'>隊列</b> & ESP32使用

    FreeRTOS消息隊列 傳遞結(jié)構(gòu)指針和結(jié)構(gòu)異同

    FreeRTOS消息隊列 傳遞結(jié)構(gòu)指針和結(jié)構(gòu)異同
    發(fā)表于 12-08 12:06 ?6次下載
    <b class='flag-5'>FreeRTOS</b>消息<b class='flag-5'>隊列</b> 傳遞<b class='flag-5'>結(jié)構(gòu)</b><b class='flag-5'>體</b>指針和<b class='flag-5'>結(jié)構(gòu)</b><b class='flag-5'>體</b>異同

    FreeRTOS 隊列 信號量 互斥量

    文章目錄前言Queue 隊列semaphore 信號量Mutex 互斥量微信公眾號前言FreeRTOS STM32CubeMX配置 內(nèi)存管理 任務(wù)管理上節(jié)介紹了用STM32CubeMX生成帶
    發(fā)表于 12-09 09:51 ?0次下載
    <b class='flag-5'>FreeRTOS</b> <b class='flag-5'>隊列</b> 信號量 互斥量

    FreeRTOS高級篇5---FreeRTOS隊列分析

    FreeRTOS提供了多種任務(wù)間通訊方式,包括:任務(wù)通知(版本V8.2以及以上版本)隊列二進制信號量計數(shù)信號量互斥量遞歸互斥量其中,二進制...
    發(fā)表于 01-26 17:40 ?9次下載
    <b class='flag-5'>FreeRTOS</b>高級篇5---<b class='flag-5'>FreeRTOS</b><b class='flag-5'>隊列</b>分析

    FreeRTOS系列第18篇---FreeRTOS隊列API函數(shù)

    FreeRTOS為操作隊列提供了非常豐富的API函數(shù),包括隊列的創(chuàng)建、刪除,靈活的入隊和出隊方式、帶中斷保護的入隊和出隊等等。下面就來詳細(xì)...
    發(fā)表于 01-26 17:44 ?11次下載
    <b class='flag-5'>FreeRTOS</b>系列第18篇---<b class='flag-5'>FreeRTOS</b><b class='flag-5'>隊列</b>API函數(shù)

    FreeRTOS的消息隊列

    基于 FreeRTOS 的應(yīng)用程序由一組獨立的任務(wù)構(gòu)成——每個任務(wù)都是具有獨立權(quán)限的程序。這些獨立的任務(wù)之間的通訊與同步一般都是基于操作系統(tǒng)提供的IPC通訊機制,而FreeRTOS 中所有的通信與同步機制都是基于隊列實現(xiàn)的。
    的頭像 發(fā)表于 02-14 09:56 ?854次閱讀
    <b class='flag-5'>FreeRTOS</b>的消息<b class='flag-5'>隊列</b>

    FreeRTOS消息隊列介紹

    隊列是為了任務(wù)與任務(wù)、任務(wù)與中斷之間的通信而準(zhǔn)備的,可以在任務(wù)與任務(wù)、任務(wù)與中斷之間傳遞消息,隊列中可以存儲有限的、大小固定的數(shù)據(jù)項目。任務(wù)與任務(wù)、任務(wù)與中斷之間要交流的數(shù)據(jù)保存在隊列中,叫做
    的頭像 發(fā)表于 07-06 16:58 ?770次閱讀
    <b class='flag-5'>FreeRTOS</b>消息<b class='flag-5'>隊列</b>介紹