有一個結構體用于描述隊列,叫做 Queue_t,這個結構體在文件 queue.c 中定義。
3、隊列創(chuàng)建
在使用隊列之前必須先創(chuàng)建隊列,有兩種創(chuàng)建隊列的方法,一種是靜態(tài)的,使用函數xQueueCreateStatic();另一個是動態(tài)的,使用函數
xQueueCreate()。這兩個函數本質上都是宏,真正完成隊列創(chuàng)建的函數是 xQueueGenericCreate()和
xQueueGenericCreateStatic(),這兩個函數在文件 queue.c 中定義。
函數 prvInitialiseNewQueue() 用于隊列的初始化,此函數在文件 queue.c 中定義。
函數 prvInitialiseNewQueue()中調用了函數 xQueueGenericReset()來復位隊列。
比如我們創(chuàng)建一個有 4 個隊列項,每個隊列項長度為 32 個字節(jié)的隊列 TestQueue,創(chuàng)建成功的隊列如圖所示:
在創(chuàng)建的時候需要指定此隊列的用途,也就是隊列類型,一共有六種類型:
queueQUEUE_TYPE_BASE 普通的消息隊列
queueQUEUE_TYPE_SET 隊列集
queueQUEUE_TYPE_MUTEX 互斥信號量
queueQUEUE_TYPE_COUNTING_SEMAPHORE 計數型信號量
queueQUEUE_TYPE_BINARY_SEMAPHORE 二值信號量
queueQUEUE_TYPE_RECURSIVE_MUTEX 遞歸互斥信號量
4、向隊列發(fā)送消息
FreeRTOS 提供了 8 個向隊列發(fā)送消息的 API 函數:
5、隊列上鎖和解鎖
隊列的上鎖和解鎖是兩個 API 函數:prvLockQueue()和 prvUnlockQueue()。
6、從隊列讀取消息
有入隊就有出隊,出隊就是從隊列中獲取隊列項(消息),F(xiàn)reeRTOS 中出隊函數如表示:
具體的函數用法大家可以在用到的時候百度,這里就不詳細介紹了,大家知道有這些東西就行。其中最重要的是任務級和中斷級不一樣,在中斷處理函數中是由一套自己的
API 用的。
-
嵌入式
+關注
關注
5087文章
19153瀏覽量
306419 -
FreeRTOS
+關注
關注
12文章
484瀏覽量
62274 -
結構體
+關注
關注
1文章
130瀏覽量
10860
發(fā)布評論請先 登錄
相關推薦
基于FreeRTOS的STM32F103系統(tǒng)—隊列
![基于<b class='flag-5'>FreeRTOS</b>的STM32F103系統(tǒng)—<b class='flag-5'>隊列</b>](https://file1.elecfans.com/web2/M00/AF/3D/wKgZomVNpTyAXx3cAAGW2jtnoYI649.jpg)
用FreeRTOS使用隊列怎么發(fā)送一個結構體呢?
轉:第20章 FreeRTOS消息隊列
請問如何用隊列傳結構體實體,而非指針傳遞?
FreeRTOS創(chuàng)建消息隊列問題如何解決
FreeRTOS消息隊列 & ESP32使用
![<b class='flag-5'>FreeRTOS</b>消息<b class='flag-5'>隊列</b> & ESP32使用](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
FreeRTOS 隊列 信號量 互斥量
![<b class='flag-5'>FreeRTOS</b> <b class='flag-5'>隊列</b> 信號量 互斥量](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
FreeRTOS高級篇5---FreeRTOS隊列分析
![<b class='flag-5'>FreeRTOS</b>高級篇5---<b class='flag-5'>FreeRTOS</b><b class='flag-5'>隊列</b>分析](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
FreeRTOS系列第18篇---FreeRTOS隊列API函數
![<b class='flag-5'>FreeRTOS</b>系列第18篇---<b class='flag-5'>FreeRTOS</b><b class='flag-5'>隊列</b>API函數](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
FreeRTOS的消息隊列
![<b class='flag-5'>FreeRTOS</b>的消息<b class='flag-5'>隊列</b>](https://file.elecfans.com/web2/M00/90/8E/poYBAGPq6fqAQ8vRAAEHvdLMkxc735.jpg)
FreeRTOS消息隊列介紹
![<b class='flag-5'>FreeRTOS</b>消息<b class='flag-5'>隊列</b>介紹](https://file1.elecfans.com/web2/M00/8C/25/wKgZomSmgi6AbaURAAJ2j7wCnv4174.jpg)
評論