FreeRTOS任務狀態查詢

一.任務相關API

vTaskList(),創建一個表格描述每個任務的詳細信息

? ?char biaoge[1000];? ? ?//定義一個緩存

? ?vTaskList(biaoge);? ? //將表格存到這緩存中
? ?printf("%s /r/n",biaoge);

1.uxTaskPriorityGet()獲取任務優先級

此函數用來獲取指定任務的優先級,要用此函數的話宏 INCLUDE_uxTaskPriorityGet應該定義為1.

函數原型

UBaseType_t?uxTaskPriorityGet(TaskHandle_t xTask)? 在task.c中

參數

xTask : 要查找的任務的任務句柄

返回值 :獲取到的對應的任務優先級 ,要去查看參數的類型,用其來定義返回值

2.vTaskPrioritySet() 改變任務優先級

此函數用于該改變某一個任務優先級,要使用此函數的話宏INCLUDE_uxTaskPrioritySet應該定義為1,函數原型如下

void?vTaskPrioritySet(TaskHandle_t xTask,UBase Type_t uxNewpriority)

xTask:要查找的任務的任務句柄

uxNewpriority:任務要使用的新的優先級,可以是0~configMAX_PRIORITIES-1。

3.uxTASkGetsystemState()??獲取系統中所有任務的任務壯態

? ? ? ? 此函數用于獲取系統中所有任務的任務壯態,每個任務的壯態信息保存在一個 TaskStatus_t類型的結構體里面,這個結構體里面包含了任務的任務句柄、任務名字、堆棧、優先級等信息,要使用此函數的話宏 configUSE_TRACE_FACILITY.應該定義力1

函數原型如下:
UBase Type_t ux TaskGetSystemState( TaskStatus 1 * const? ? ? px TaskStatusArray,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?const UBaseType_t? ? ? ux Array Size,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?uint32_1 * const? ? ? ? ? ? pulTotalRun Time )
參數:
pxTaskStatusArray: 指向 TaskStatus_1結構體類型的數組首地址,每個任務至少需要一個TaskStatus_t?結構體,任務的數量可以使用的數uxTaskGetNumberOfTasks()。

結構體 TaskStatus_t 在文件task.h中有如下定義:
typedef struct TASK_ STATUS
{

? ? ? ?TaskHandle 1? ? ?xHandle;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //任務句柄
? ? ? ?const char *? ? ? ??pc TaskName;? ? ? ? ? ? ? ? ? ? ? ?//任務名字
? ? ? ?UBase Type t? ? ?x TaskNumber;? ? ? ? ? ? ? ? ? ? ? //任務編號 ?
? ? ? ?eTaskState? ? ? ? ?eCurrentState;? ? ? ? ? ? ? ? ? ? ? //當前任務壯態,cTaskState 是一個枚舉類型
? ? ? ?UBase Type_t? ? ?uxCurrentPriority;? ? ? ? ? ? ? //任務當前的優先級
? ? ? ?UBase Type_t? ? ?uxBasePriority;? ? ? ? ? ? ? ? ? ? //任務基礎優先級
? ? ? ?uint32_1? ? ? ? ? ? ?ulRunTimeCounter,? ? ? ? ? ? ? //任務運行的總時間
? ? ? ?StackType 1 *? ? ?pxStackBase;? ? ? ? ? ? ? ? ? ? ? ?//堆棧基地址
? ? ? ?uint 16_t? ? ? ??? ? usStackHigh WaterMark;? ? ? //從任務創建以來任務堆找剩余的最小大小,此
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 值如果太小的話說明堆找有溢出的風險。

) TaskStatus_t;

uxArraySize:保存任務壯態數組的數組的大小。



?

4.vTaskGetInfo()獲取指定任務的狀態

5.xTaskGetApplication Task Tag()用于獲取任務Tag值

6.xTaskGetCurrentTaskHandle()獲取當前任務的任務句柄

7.xTaskGetHandle()根據任務文字獲取任務的任務句柄

在使用函數下TaskCreate()或xTaskCreateStatic()創建任務的時候都會給任務分配一個任務名,.xTaskGetHandle()函數就是根據這個任務名來查詢其對應得任務句柄。

要使用此函數的話宏 INCLUDE_xTaskGetHandle 應該定義力1

函數原型如下:

?TakeHandle_T xTaskGetHandle( const char*? pcNameQuery)

參數

pcNameToQuery:? ? 任務名,C語言字符串。

要把這個函數獲得句柄就要定義一個和定義這個函數一樣的類型數

寫好獲取句柄的函數和打印函數?? ?

?Taskhandle = xTaskGetHandle("query_task");??query_task要查詢的任務的任務名,這個函數的參數是指針類型,所以要用字符串

發現兩個獲取的句柄一樣,函數使用正確

8.xTaskGetIdleTaskHandle() 用于返回空閑任務的任務句柄,要使用此函數的話對應宏要為1

9.uxTaskGetStackHighWaterMark()用于查詢任務從創建好到現在的歷史剩余最小值,這個值越小說明任務堆棧溢出的可能性就越大!

FreeRTOS 把這個歷史剩余最小值叫做“高水位線”。此函數相對來說會多耗費一點時間,所以在代碼調試階段可以使用,產品發布的時候最好不要使用。要使用此函數的話宏? ?INCLUDE_uxTaskGetStackHigh WaterMark 必須為1,此函數原型:下:
?UBase Type_t ux TaskGetStackHighWaterMark( TaskHandle_t xTask)
參數:
xTask:要查詢的任務的任務句柄,當這個參數為 NULL 的話說明查詢自身任務(即調用函數 ux TaskGetStackHlighWaterMark0的任務)的“高水位線”。
返回值:任務堆棧的“高水位線”值,也就是堆棧的歷史剩余最小值。

定義的大小為200,剩余146,說明用了54個。

? 10.eTaskGetState()此函數用于查詢某個任務的運行壯態

比如:運行態、阻塞態、掛起態、就緒態等,返回值是個枚舉類型。要使用此函數的話宏 INCLUDE_cTaskGietStale 必須為1,函數原型如下,
eTaskState? ? eTaskGetState( TaskHandle_t? xTask)

xTask:要查詢的任務的任務句柄

返回值:返回值eTaskState的類型,這個是個枚舉類型,在文件task.h中有定義

返回值1:就緒態的意思

11.pcTaskGetName() 根據任務句柄查詢任務的名字

12.xTaskGetTickCount()查詢任務從調度到現在運行的時間

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/72949.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/72949.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/72949.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

yolov5代碼詳解--3.python代碼腳本

三、val.py val.py的主要作用是對訓練好的模型進行驗證(或評估)。具體來說,它用于在指定的驗證集上評估模型的性能,計算各項評估指標,并輸出結果。val.py通常在模型訓練完成后運行,用于驗證模型的檢測精度、…

無人機應用探索:玻纖增強復合材料的疲勞性能研究

隨著無人機技術的快速發展,輕量化已成為其結構設計的核心需求。玻纖增強復合材料憑借高強度、低密度和優異的耐環境性能,成為無人機機身、旋翼支架等關鍵部件的理想選擇。然而,無人機在服役過程中需應對復雜多變的環境:高空飛行時…

Python SQLite3 保姆級教程:從零開始學數據庫操作

Python SQLite3 保姆級教程:從零開始學數據庫操作 本文適合純新手!無需任何數據庫基礎,跟著步驟操作即可掌握 SQLite3 的核心用法。 目標:讓你像用記事本一樣輕松操作數據庫! 目錄 什么是 SQLite3?環境準…

C語言中的整數類型(short,int,long和long long)

整數是編程中最常見的一種數據類型,C語言提供了多種整數類型,包括 short、int、long 和 long long,它們的主要區別在于存儲范圍和內存占用的大小。 本節將詳細講解這些整數類型的定義、特性、使用場景以及注意事項,幫助你全面理解…

使用jcodec庫,訪問網絡視頻提取封面圖片上傳至oss

注釋部分為FFmpeg(確實方便但依賴太大,不想用) package com.zuodou.upload;import com.aliyun.oss.OSS; import com.aliyun.oss.model.ObjectMetadata; import com.aliyun.oss.model.PutObjectRequest; import com.zuodou.oss.OssProperties;…

游戲引擎學習第147天

倉庫:https://gitee.com/mrxiao_com/2d_game_3 上一集回顧 具體來說,我們通過隱式計算來解決問題,而不是像數字微分分析器那樣逐步增加數據。我們已經涵蓋了這個部分,并計劃繼續處理音量問題。不過,實際上我們現在不需要繼續處理…

使用Dockerfile打包java項目生成鏡像部署到Linux_java項目打docker鏡像的dockerfile

比起容器、鏡像來說,Dockerfile 非常普通,它就是一個純文本,里面記錄了一系列的構建指令,比如選擇基礎鏡像、拷貝文件、運行腳本等等,每個指令都會生成一個 Layer,而 Docker 順序執行這個文件里的所有步驟&…

Linux -- 磁盤結構、文件系統ext2

一、磁盤 1.磁盤的物理結構 2.磁盤的存儲結構 盤片:是機械硬盤存儲數據的主要介質,一般由鋁合金或玻璃等材料制成,表面涂有一層磁性材料。數據通過磁頭在盤片的磁性涂層上進行磁化來記錄,磁化的不同方向代表二進制的 0 和 1。盤面…

標量、向量、矩陣與張量:從維度理解數據結構的層次

在數學和計算機科學中,維度描述了數據結構的復雜性,而標量、向量、矩陣、張量則是不同維度的數據表示形式。它們的關系可以理解為從簡單到復雜的擴展,以下是詳細解析: 1. 標量(Scalar):0維數據 定義:單個數值,沒有方向,只有大小。 維度:0維(無索引)。 示例: 溫度…

點云數據處理--splat轉3dtiles

文章目錄 處理流程簡介核心功能實現數據讀取與格式轉換定義Point類數據讀取splat轉gltf 點云數據分割定義四叉樹遞歸生成3dtiles瓦片 生成tileset.json遞歸生成tileset.json計算box 主函數調用渲染 下一步工作性能優化渲染效果調優其他 源碼地址: github 處理流程簡…

OneM2M:全球性的物聯網標準-可應用于物聯網中

OneM2M 是一個全球性的物聯網(IoT)標準,旨在為物聯網設備和服務提供統一的框架和接口,以實現設備之間的互操作性、數據共享和服務集成。OneM2M 由多個國際標準化組織(如 ETSI、TIA、TTC、ARIB 等)共同制定,目標是解決物聯網領域的碎片化問題,提供一個通用的標準,支持跨…

【Python 入門基礎】—— 人工智能“超級引擎”,AI界的“瑞士軍刀”,

歡迎來到ZyyOvO的博客?,一個關于探索技術的角落,記錄學習的點滴📖,分享實用的技巧🛠?,偶爾還有一些奇思妙想💡 本文由ZyyOvO原創??,感謝支持??!請尊重原創&#x1…

Java爬蟲獲取淘寶商品詳情數據的完整指南

在電商領域,獲取商品詳情數據對于市場分析、價格監控、用戶體驗優化等場景具有重要意義。淘寶作為國內領先的電商平臺,提供了豐富的API接口供開發者使用,其中item_get和item_get_pro接口可以用來獲取商品的詳細信息。本文將詳細介紹如何使用J…

Ubuntu 下 nginx-1.24.0 源碼分析 - ngx_init_cycle 函數

nei聲明在 src/core/ngx_cycle.h ngx_cycle_t *ngx_init_cycle(ngx_cycle_t *old_cycle);實現在 src/core/ngx_cycle.c ngx_cycle_t * ngx_init_cycle(ngx_cycle_t *old_cycle) {void *rv;char **senv;ngx_uint_t i, n;ngx_log_t …

qt 操作多個sqlite文件

qt 操作多個sqlite文件 Chapter1 qt 操作多個sqlite文件1. 引入必要的頭文件2. 創建并連接多個SQLite數據庫3. 代碼說明4. 注意事項 Chapter2 qt 多線程操作sqlite多文件1. 引入必要的頭文件2. 創建數據庫操作的工作線程類3. 在主線程中創建并啟動多個工作線程4. 代碼說明5. 運…

最新版本WebContext構造函數-避坑

import org.thymeleaf.context.IWebContext; import org.thymeleaf.context.WebContext; 當你想把頁面信息全部獲取出來存到redis緩存中使用時,SpringWebContext在Spring5中報錯 SpringWebContext ctx new SpringWebContext(request, response,request.getServlet…

用Python分割并高效處理PDF大文件

在處理大型PDF文件時,將它們分解成更小、更易于管理的塊通常是有益的。這個過程稱為分區,它可以提高處理效率,并使分析或操作文檔變得更容易。在本文中,我們將討論如何使用Python和為Unstructured.io庫將PDF文件劃分為更小的部分。…

neo4j隨筆-將csv文件導入知識圖譜

目錄 導入前的準備 導入csv文件 導入nodes1.1.csv并動態為節點添加標簽 ?編輯導入relations1.1.csv并動態為關系添加標簽 結果 導入前的準備 我有兩個csv文件 nodes1.1.csv存放節點信息,用記事本打開,能正常顯示,且編碼為UTF-8,就可以…

cpu 多級緩存L1、L2、L3 與主存關系

現代 CPU 的多級緩存(L1、L2、L3)和主存(DRAM)構成了一個層次化的內存系統,旨在通過減少內存訪問延遲和提高數據訪問速度來優化計算性能。以下是對多級緩存和主存的詳細解析: 1. 緩存層次結構 現代 CPU 通…

C++:入門詳解(關于C與C++基本差別)

目錄 一.C的第一個程序 二.命名空間(namespace) 1.命名空間的定義與使用: (1)命名空間里可以定義變量,函數,結構體等多種類型 (2)命名空間調用(&#xf…