国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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

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

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

FreeRTOS任務如何創(chuàng)建和刪除?

安芯教育科技 ? 來源:極術(shù)社區(qū) ? 作者:朱工 ? 2021-03-11 18:08 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

任務創(chuàng)建和刪除API函數(shù)位于文件task.c中,需要包含task.h頭文件。

1. 任務創(chuàng)建

1.1 函數(shù)描述

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

創(chuàng)建新的任務并加入任務就緒列表。

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

1.2 參數(shù)描述

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

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

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

pvParameters:指針,當任務創(chuàng)建時,作為一個參數(shù)傳遞給任務。

uxPriority:任務的優(yōu)先級。具有MPU支持的系統(tǒng),可以通過置位優(yōu)先級參數(shù)的portPRIVILEGEBIT位,隨意的在特權(quán)(系統(tǒng))模式下創(chuàng)建任務。比如,創(chuàng)建一個優(yōu)先級為2的特權(quán)任務,參數(shù)uxPriority可以設置為( 2 | portPRIVILEGE_BIT )。

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

1.3 返回值

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

1.4 用法舉例

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

2. 任務刪除

2.1 任務描述

voidvTaskDelete( TaskHandle_t xTask );

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

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

2.2 參數(shù)描述

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

原文標題:FreeRTOS系列第10篇---FreeRTOS任務創(chuàng)建和刪除

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

責任編輯:haq

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

    關(guān)注

    25

    文章

    866

    瀏覽量

    122992
  • FreeRTOS
    +關(guān)注

    關(guān)注

    14

    文章

    499

    瀏覽量

    66939

原文標題:FreeRTOS系列第10篇---FreeRTOS任務創(chuàng)建和刪除

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

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    FreeRTOS入門資料

    任務的數(shù)量沒有限制,既支持優(yōu)先級調(diào)度算法也支持輪換調(diào)度算法,因此FreeRTOS采用雙向鏈表而不是采用查任務就緒表的方法來進行任務調(diào)度。 三、任務
    發(fā)表于 01-23 06:38

    FreeRTOS任務和協(xié)程的區(qū)別是什么

    1.堆棧 協(xié)程是沒有堆棧分配的,是所有創(chuàng)建的協(xié)程共同使用一個堆棧空間,這相比于任務來說,減少了RAM的使用空間。 2. 調(diào)度和優(yōu)先級 協(xié)程使用協(xié)同調(diào)度,但是可以包含在使用的搶占優(yōu)先級之中。 3. 宏
    發(fā)表于 12-08 08:18

    ucos與freertos哪個好?

    選擇uCOS或FreeRTOS取決于項目的具體需求和資源限制。 FreeRTOS的優(yōu)點包括: 更小的內(nèi)核ROM和RAM占用,特別是在RAM方面,適合資源受限的嵌入式系統(tǒng)。 支持協(xié)程
    發(fā)表于 12-05 07:13

    FreeRTOS 空閑任務

    FreeRTOS 中很多人會注意到為什么有一個叫IDLE task的任務占用了CPU百分之九十多的使用權(quán),但是這個任務并沒有自己手動創(chuàng)建。原因就是這個空閑
    發(fā)表于 12-04 07:35

    FreeRTOS和uC/OS-II的功能特性

    FreeRTOS: 核心功能: 任務調(diào)度(固定優(yōu)先級搶占式 + 時間片輪詢)、隊列、信號量(二進制、計數(shù))、互斥鎖(帶優(yōu)先級繼承)、軟件定時器、事件組(事件標志)、任務通知(高效輕量級的信號量
    發(fā)表于 11-17 08:17

    freertos關(guān)閉任務調(diào)度的方法

    #include \"FreeRTOS.h\" #include \"task.h\" /* 關(guān)閉任務調(diào)度 */ void
    發(fā)表于 11-17 06:47

    FreeRTOS任務調(diào)度及優(yōu)先級問題

    大家好,最近本人在學習FreeRTOS ,之前有過一些裸機開發(fā)的經(jīng)驗,目前知道了FreeRTOS任務是基于時間片輪轉(zhuǎn)來調(diào)度,也就是知道了任務會基于各個時間片來運行。 于是聯(lián)想了如果有
    發(fā)表于 11-06 02:18

    【RA4L1-SENSOR】04 用FreeRTOS重構(gòu)工程

    LCD顯示 在FreeRTOS中,我們就把這兩個功能作為兩個任務創(chuàng)建。 點擊Stacks選項卡--在左側(cè)的New Thread -- 點擊新創(chuàng)建的Thread 屬性 -- 修改Name
    發(fā)表于 06-16 22:28

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

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

    詳解FreeRTOS與SAFERTOS的區(qū)別

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

    FreeRTOS讀取ADS1299數(shù)據(jù)有誤

    您好,請問,用stm32的FreeRTOS的隊列對ADS1299傳感器讀取數(shù)據(jù),已設置采樣率為2khz 在采集任務中:通過spi讀取數(shù)據(jù)——濾波(-DSP庫)——將數(shù)據(jù)寫入隊列——延時
    發(fā)表于 05-05 22:48

    【RA-Eco-RA4M2開發(fā)板評測】RA-Eco-RA4M2 移植FreeRTOS

    FreeRTOS、Threadx,這里選擇FreeRTOS。 Figure 2?5 選擇RTOS 接下來就是選擇工程模板。 Figure 2?6 工程模板選擇 接下來在新建一個空任務。點擊“Stacks
    發(fā)表于 05-03 23:24

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

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

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

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

    移植LWIP+FREERTOS時遇到的問題怎么解決?

    :將ST官網(wǎng)的LWIP1.4.1 的例子(關(guān)于LWIP的部分)移植到步驟1 的FreeRTOS 系統(tǒng)的工程里面,只是添加LWIP初始化的任務,并沒有調(diào)用任何接口的情況下可以Ping 通 而且長時間
    發(fā)表于 03-11 06:48