色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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
    +關注

    關注

    22

    文章

    811

    瀏覽量

    119598
  • FreeRTOS
    +關注

    關注

    12

    文章

    484

    瀏覽量

    62149

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

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

收藏 人收藏

    評論

    相關推薦

    freertos最多支持多少個任務

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

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

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

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

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

    vTaskDelete()刪除正在打印日志的任務導致esp32卡死無法恢復要怎么處理?

    實際的應用場景是錄音的時候創建了一個任務去讀i2s數據,放到一個ringbuf里,然后主任務從ringbuf里取數據進行降噪編碼處理。 長跑測試發現設備在執行錄音時偶然會發生死機現象,排查發現是讀
    發表于 06-17 07:48

    請問一下FREERTOS只能創建4個任務,修改哪個宏定義可以增加創建任務的數量?

    請問一下FREERTOS只能創建4個任務,修改哪個宏定義可以增加創建任務的數量?解決方法:增加FREER
    發表于 05-13 06:44

    基于STM32Cubemx創建FreeRTOS創建UART任務遇到的兩個問題求解

    基于STM32Cubemx創建FreeRTOS創建UART任務,經過測試發現有以下兩個問題: 1、串口波特率問題: 在STM32Cubemx中串口設置如下: /* USART3 in
    發表于 05-10 07:33

    用STM32CubeMX中的FreeRTOS創建3任務無法運行的原因?

    用STM32CubeMX中的FreeRTOS 創建3任務 Task Priority =osPrioirityNoral 等級的任務,無法運行。 如果
    發表于 05-09 07:02

    HarmonyOS開發案例:【Stage模型下Ability的創建和使用】

    基于Stage模型,對Ability的創建和使用進行講解。首先在課程中我們將帶領大家使用DevEco Studio創建一個Stage模型Ability,并使用UIAbilityContext啟動
    的頭像 發表于 05-08 14:41 ?730次閱讀
    HarmonyOS開發案例:【Stage模型下Ability的<b class='flag-5'>創建和</b>使用】

    用的cube生成的freertos工程,串口和任務通過郵箱通訊,結果任務反應很慢是怎么回事?

    初學freertos。用的cube生成的freertos工程,單片機型號位stm32f103vbt6。 建了三個人物,一個是串口任務,一個是LED每秒翻轉一次,一個是空任務。 串口
    發表于 05-08 08:13

    freertos系統如何劃分任務

    正在看freertos方面的教程,想請教下如何劃分任務? 比如之前做的一個數據采集板,用到了單片機以下功能: 1,單片機通過SPI1和ADC芯片通訊,同時還要通過SPI控制ADC電路部分的其他外圍
    發表于 05-08 07:16

    freertos任務創建,每一個任務分配的內存是多大才好,怎么計算呢?

    小白剛剛接觸freertos,想問一下就創建任務而言,每一個任務分配的內存是多大才好,怎么計算呢? 另外,每個任務的執行周期怎么確定?在
    發表于 04-23 06:39

    為什么CubeMX設計的FreeRTOS工程只能正常運行3個任務

    用CubeMX4.20設計的FreeRTOS工程有六個任務,出一個任務優先級較低外,另外幾個都是較高優先級。發現只有3個任務是正常運行的,還有三個沒有運行的跡象。用斷點跟蹤法在
    發表于 04-19 08:23

    請問FreeRTOS同一個任務多次創建會有什么后果?

    比如在初始創建任務時就創建任務1、2、3、4、5 然后在任務2過程中又再次創建
    發表于 04-15 06:36

    FreeRTOS任務無故進入掛起狀態的原因?

    請教大家一個問題,我子啊使用FreeRTOS的時候創建了一個以太網的任務任務在使用的過程中被無故掛起,請問一下出現這種現象有哪幾種原因呢?
    發表于 04-09 07:20

    FreeRTOS如何刪除clib支持和抽象rtos?

    我目前在我的項目中使用FreeRTOS,但只使用了其最少的功能。 我需要刪除 clib 支持和抽象 rtos,只保留 FreeRTOS。 這是為了實現更輕的應用程序并最大限度地減少依賴關系。 我怎么能那樣做?
    發表于 01-25 06:19
    主站蜘蛛池模板: 夜夜国产亚洲视频香蕉| 棉袜足j吐奶视频| 果冻传媒视频在线播放| 正能量不良WWW免费窗口| 日韩在线视频www色| 久久全国免费久久青青小草| 大桥未久在线看| 2022精品福利在线小视频| 性xxxx直播放免费| 欧美三级aaa| 久久视频精品3线视频在线观看| 国产成人免费高清激情视频| 91精品国产色综合久久| 亚洲精品乱码久久久久久中文字幕 | 夜夜躁婷婷AV蜜桃视频| 色偷偷7777www| 暖暖 视频 在线 观看 高清| 精品久久免费视频| 国产精品久久久久久搜索| eussse手机电影在线观看| 伊人久久五月丁婷婷| 亚洲AV成人无码999WWW| 日韩亚洲欧美中文在线| 欧美残忍xxxx极端| 乱h好大噗嗤噗嗤烂了| 久久99国产精品无码AV| 国产欧美一本道无码| 大胸美女洗澡扒奶衣挤奶| 99精品观看| 67194线在线精品观看| 野花视频在线观看免费最新动漫| 亚洲AV色香蕉一区二区9255| 色宅男看片午夜大片免费看| 琪琪热热色原日韩在线| 女教师公车痴汉在线播放| 蜜芽无码亚洲资源网站| 久久高清免费视频| 久久久久琪琪精品色| 久久精品视频在线看99| 久久影院一区| 久久综合色一综合色88中文|