在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

3天內不再提示

FreeRTOS任務如何創建和刪除?

安芯教育科技 ? 來源:極術社區 ? 作者:朱工 ? 2021-03-11 18:08 ? 次閱讀

FreeRTOS移植到Cortex-M3硬件平臺的文章中,我們已經見過任務創建API,但那篇文章的重點在于如何移植FreeRTOS,本文將重點放在任務的創建和刪除API函數上面。

任務創建和刪除API函數位于文件task.c中,需要包含task.h頭文件。

1. 任務創建

1.1 函數描述

BaseType_t xTaskCreate( TaskFunction_t pvTaskCode, const char * const pcName, unsigned short usStackDepth, void *pvParameters, UBaseType_t uxPriority, TaskHandle_t * pvCreatedTask );

創建新的任務并加入任務就緒列表。

如果使用FreeRTOS-MPU(在官方下載包中,為Cortex-M3內核寫了兩個移植方案,一個是普通的FreeRTOS移植層,還有一個是FreeRTOS-MPU移植層。后者包含完整的內存保護),那么推薦使用函數xTaskCreateRestricted()來代替xTaskCreate()。在使用FreeRTOS-MPU的情況下,使用xTaskCreate()函數可以創建運行在特權模式或用戶模式(見下面對函數參數uxPriority的描述)的任務。當運行在特權模式下,任務可以訪問整個內存映射;當處于用戶模式下,任務僅能訪問自己的堆棧。無論在何種模式下,MPU都不會自動捕獲堆棧溢出,因此標準的FreeRTOS堆棧溢出檢測機制仍然會被用到。xTaskCreateRestricted()函數具有更大的靈活性。

1.2 參數描述

pvTaskCode:指針,指向任務函數的入口。任務永遠不會返回(位于死循環內)。該參數類型TaskFunction_t定義在文件projdefs.h中,定義為:typedefvoid (TaskFunction_t)( void )。

pcName:任務描述。主要用于調試。字符串的最大長度由宏configMAXTASKNAMELEN指定,該宏位于FreeRTOSConfig.h文件中。

usStackDepth:指定任務堆棧大小,能夠支持的堆棧變量數量,而不是字節數。比如,在16位寬度的堆棧下,usStackDepth定義為100,則實際使用200字節堆棧存儲空間。堆棧的寬度乘以深度必須不超過sizet類型所能表示的最大值。比如,sizet為16位,則可以表示的最大值是65535。

pvParameters:指針,當任務創建時,作為一個參數傳遞給任務。

uxPriority:任務的優先級。具有MPU支持的系統,可以通過置位優先級參數的portPRIVILEGEBIT位,隨意的在特權(系統)模式下創建任務。比如,創建一個優先級為2的特權任務,參數uxPriority可以設置為( 2 | portPRIVILEGE_BIT )。

pvCreatedTask:用于回傳一個句柄(ID),創建任務后可以使用這個句柄引用任務。

1.3 返回值

如果任務成功創建并加入就緒列表函數返回pdPASS,否則函數返回錯誤碼,具體參見projdefs.h。

1.4 用法舉例

/* 創建任務。 */void vTaskCode( void * pvParameters ){ for( ;; ) { /* 任務代碼放在這里 */ }} /* 創建任務函數 */void vOtherFunction( void ){ static unsigned char ucParameterToPass; xTaskHandlexHandle; /* 創建任務,存儲句柄。注:傳遞的參數ucParameterToPass必須和任務具有相同的生存周期, 因此這里定義為靜態變量。如果它只是一個自動變量,可能不會有太長的生存周期,因為 中斷和高優先級任務可能會用到它。*/ xTaskCreate( vTaskCode, “NAME”, STACK_SIZE,&ucParameterToPass, tskIDLE_PRIORITY, &xHandle ); /* 使用句柄刪除任務。 */ if( xHandle !=NULL ) { vTaskDelete( xHandle ); }}

2. 任務刪除

2.1 任務描述

voidvTaskDelete( TaskHandle_t xTask );

RTOS內核管理器中刪除一個任務。任務刪除后將會從就緒、阻塞、暫停和事件列表中移除。在文件FreeRTOSConfig.h中,必須定義宏INCLUDE_vTaskDelete 為1,本函數才有效。

注:被刪除的任務,其在任務創建時由內核分配的存儲空間,會由空閑任務釋放。如果有應用程序調用xTaskDelete(),必須保證空閑任務獲取一定的微控制器處理時間。任務代碼自己分配的內存是不會自動釋放的,因此刪除任務前,應該將這些內存釋放。

2.2 參數描述

xTask:被刪除任務的句柄。為NULL表示刪除當前任務。

原文標題:FreeRTOS系列第10篇---FreeRTOS任務創建和刪除

文章出處:【微信公眾號:安芯教育科技】歡迎添加關注!文章轉載請注明出處。

責任編輯:haq

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

    關注

    24

    文章

    844

    瀏覽量

    120854
  • FreeRTOS
    +關注

    關注

    12

    文章

    492

    瀏覽量

    63886

原文標題:FreeRTOS系列第10篇---FreeRTOS任務創建和刪除

文章出處:【微信號:Ithingedu,微信公眾號:安芯教育科技】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    FreeRTOS任務中發送事件隊列是有什么限制嗎?

    到了TMC的芯片,但是在到位上報的信息中少了卡死電機的上報。所以有的電機的到位中斷并沒有成功寫入任務。 一開始是每個電機都開啟了一個定時器查詢,后續改成一個定時器查六個電機并將定時器的周期加到50ms,就很少會卡死。 所以向FreeRTOS
    發表于 06-11 07:57

    詳解FreeRTOS與SAFERTOS的區別

    開源免費的FreeRTOS由Richard Barry在WHIS工作時創建,WHIS基于FreeRTOS的功能模型,通過完整的HAZOP分析,確定了功能模型和API中的所有的弱點,減輕所有薄弱環節,并采用IEC 61508 SI
    的頭像 發表于 06-04 16:58 ?255次閱讀
    詳解<b class='flag-5'>FreeRTOS</b>與SAFERTOS的區別

    嵌入式開發避坑指南|FreeRTOS的5個\"反直覺\"小技巧

    技巧1:堆內存配置不是越大越好! 進階原理: FreeRTOS內存分配存在\"碎片黑洞\"現象,即使總內存充足,碎片化仍可能導致分配失敗。例如某項目堆大小設為15KB,但頻繁創建
    發表于 03-20 13:57

    CubeMX創建STM32F1 FreeRTOS選擇新版庫1.8.6后工程出錯是怎么回事?

    創建出來的工程首先提示缺少文件 freertos_mpool.h , 然后將次文件從CubeMX的庫中 手動拷貝過來后接著又提示報錯 *** Using Compiler '
    發表于 03-14 06:31

    SOLIDWORKS 2025教育版支持多部件裝配體的創建和管理

    SOLIDWORKS作為一款廣泛使用的三維CAD設計軟件,在教育領域同樣占據了重要地位。SOLIDWORKS 2025教育版不僅提供了強大的設計工具和功能,還大大地支持了多部件裝配體的創建和管理,為教育工作者和學生提供了一個有效、直觀的設計平臺。
    的頭像 發表于 02-10 14:45 ?417次閱讀
    SOLIDWORKS 2025教育版支持多部件裝配體的<b class='flag-5'>創建和</b>管理

    Spire.Cloud.Presentation說明

    ,包括生成、讀取、編輯和轉換 Presentation 文檔,設置、讀取和刪除文檔屬性,添加、編輯和刪除幻燈片,設置幻燈片背景顏色、背景圖片,創建和刪除表格、插入圖片和形狀,
    的頭像 發表于 01-05 10:25 ?472次閱讀
    Spire.Cloud.Presentation說明

    使用任務通知提高RTOS應用的效率

    在實時嵌入式系統中,性能和資源效率是決定設計成敗的關鍵因素。傳統的實時操作系統(RTOS)提供了如隊列、信號量和事件組機制,實現任務之間的同步和通信。FreeRTOS/SAFERTOS還提供一種方法可以使這些過程更快、更輕量化,即任務
    的頭像 發表于 12-27 14:54 ?647次閱讀

    如何處理機智云移動應用的刪除問題

    如何處理機智云移動應用的刪除問題在日常使用機智云移動應用時,用戶可能會遇到無法自行刪除應用的問題。根據最新版本的設計,機智云并不支持用戶直接刪除創建的應用。這主要是由于每個應用都有一
    的頭像 發表于 10-23 08:04 ?514次閱讀
    如何處理機智云移動應用的<b class='flag-5'>刪除</b>問題

    freertos最多支持多少個任務

    FreeRTOS是一個輕量級的實時操作系統(RTOS),其設計初衷就是為了提供簡單、可靠且高效的實時任務管理。關于FreeRTOS最多支持多少個任務的問題,實際上并沒有一個固定的上限,
    的頭像 發表于 09-02 14:21 ?2068次閱讀

    freertos和rtos區別是什么

    。RTOS 的主要特點是實時性、多任務處理、資源管理、中斷處理等。 FreeRTOS 是一個開源的實時操作系統,由英
    的頭像 發表于 09-02 14:18 ?2775次閱讀

    freertos和裸機有什么區別

    FreeRTOS 和裸機編程是兩種不同的嵌入式系統開發方法,它們在設計理念、資源使用、功能實現等方面有著顯著的差異。 1. 基本概念 1.1 FreeRTOS FreeRTOS 是一個小型的、可裁剪
    的頭像 發表于 09-02 14:13 ?2849次閱讀

    esp8266的freertos+lwip不支持在多個任務創建多個不同的socket嗎?

    的socket fd。也就是說每個socket都是在各自的任務創建、讀寫和close的,按照道理應該是互相獨立的,但是為啥會互相影響? 難道樂鑫的esp8266的freertos+lwip不支持在多個
    發表于 07-11 07:29

    如何使用freeRTOS在兩個任務之間傳輸任務數據?

    /溫度。 我想創建一個 CSV 文件來記錄一段時間內的數據。 我創建 I2C 任務的方法與示例中的 emFIlesystem 任務相同。 兩者都在運行,做著它們應該做的事情,但我覺得它
    發表于 07-03 07:55

    esp32-c3工程中怎么創建多個freertos任務?

    ESP-IDF中給出的ESP32-C3的例程都只有一個任務。即void app_main() 而且沒看見這個app_main任務是在哪里被創建的??? 如果我想建一個ESP32-C3的多任務
    發表于 06-27 06:37

    esp32S2創建任務時,若任務堆棧大小配置超過 4096*6 ,該任務創建失敗,如何解決?

    esp32S2創建任務時,若任務堆棧大小配置超過 4096*6 ,該任務創建失敗, xTaskCreat 返回 xReturn = fff
    發表于 06-20 08:26
    主站蜘蛛池模板: 天天插伊人 | 美女把尿口扒开让男人桶出水 | 免费高清特级毛片 | 夜色资源站www国产在线观看 | 色色视频网| 九色综合九色综合色鬼 | 午夜大片男女免费观看爽爽爽尤物 | 欧美日韩高清一本大道免费 | 久久婷婷色 | 好吊色青青青国产在线观看 | 亚洲天天做夜夜做天天欢人人 | 人人做人人爽 | 久久久久久免费观看 | 国产玖玖 | 欧美性性性性性ⅹxxbbbb | 午夜逼逼| 最新色视频| 久久亚洲免费视频 | 亚洲a人片在线观看网址 | 国产精品推荐天天看天天爽 | 六月丁香婷婷网 | 五月天丁香婷婷开心激情五月 | 日本一区二区三区四区在线观看 | 男人日女人视频免费看 | 免费观看美女被cao视频 | 毛片免费网 | 最新午夜宅男 | 女人大毛片一级毛片一 | 国产免费的野战视频 | 一级毛片一级毛片一级毛片aa | 伊人久久综合网亚洲 | 国产图片区 | 激情网网站 | 精品无码三级在线观看视频 | 精品久久天干天天天按摩 | 国产真实灌醉美女疯狂弄 | 美女视频一区二区三区在线 | 欧美黄色三级视频 | 老湿影院免费体验区 | 一级片免费在线观看视频 | 色播图片 |