一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

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

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

掃碼添加小助手

加入工程師交流群

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

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

1. 任務(wù)創(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)建新的任務(wù)并加入任務(wù)就緒列表。

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

1.2 參數(shù)描述

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

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

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

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

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

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

1.3 返回值

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

1.4 用法舉例

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

2. 任務(wù)刪除

2.1 任務(wù)描述

voidvTaskDelete( TaskHandle_t xTask );

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

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

2.2 參數(shù)描述

xTask:被刪除任務(wù)的句柄。為NULL表示刪除當(dāng)前任務(wù)。

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

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

責(zé)任編輯:haq

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

    關(guān)注

    24

    文章

    851

    瀏覽量

    121189
  • FreeRTOS
    +關(guān)注

    關(guān)注

    12

    文章

    493

    瀏覽量

    64366

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

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

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

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

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

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

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

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

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

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

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

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

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

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

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

    移植LWIP+FREERTOS時(shí)遇到的問(wèn)題怎么解決?

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

    SOLIDWORKS 2025教育版支持多部件裝配體的創(chuàng)建和管理

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

    Spire.Cloud.Presentation說(shuō)明

    ,包括生成、讀取、編輯和轉(zhuǎn)換 Presentation 文檔,設(shè)置、讀取和刪除文檔屬性,添加、編輯和刪除幻燈片,設(shè)置幻燈片背景顏色、背景圖片,創(chuàng)建和刪除表格、插入圖片和形狀,
    的頭像 發(fā)表于 01-05 10:25 ?512次閱讀
    Spire.Cloud.Presentation說(shuō)明

    使用任務(wù)通知提高RTOS應(yīng)用的效率

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

    如何處理機(jī)智云移動(dòng)應(yīng)用的刪除問(wèn)題

    如何處理機(jī)智云移動(dòng)應(yīng)用的刪除問(wèn)題在日常使用機(jī)智云移動(dòng)應(yīng)用時(shí),用戶可能會(huì)遇到無(wú)法自行刪除應(yīng)用的問(wèn)題。根據(jù)最新版本的設(shè)計(jì),機(jī)智云并不支持用戶直接刪除創(chuàng)建的應(yīng)用。這主要是由于每個(gè)應(yīng)用都有一
    的頭像 發(fā)表于 10-23 08:04 ?551次閱讀
    如何處理機(jī)智云移動(dòng)應(yīng)用的<b class='flag-5'>刪除</b>問(wèn)題

    freertos最多支持多少個(gè)任務(wù)

    FreeRTOS是一個(gè)輕量級(jí)的實(shí)時(shí)操作系統(tǒng)(RTOS),其設(shè)計(jì)初衷就是為了提供簡(jiǎn)單、可靠且高效的實(shí)時(shí)任務(wù)管理。關(guān)于FreeRTOS最多支持多少個(gè)任務(wù)的問(wèn)題,實(shí)際上并沒(méi)有一個(gè)固定的上限,
    的頭像 發(fā)表于 09-02 14:21 ?2276次閱讀

    freertos和rtos區(qū)別是什么

    。RTOS 的主要特點(diǎn)是實(shí)時(shí)性、多任務(wù)處理、資源管理、中斷處理等。 FreeRTOS 是一個(gè)開(kāi)源的實(shí)時(shí)操作系統(tǒng),由英
    的頭像 發(fā)表于 09-02 14:18 ?3030次閱讀

    freertos和裸機(jī)有什么區(qū)別

    FreeRTOS 和裸機(jī)編程是兩種不同的嵌入式系統(tǒng)開(kāi)發(fā)方法,它們?cè)谠O(shè)計(jì)理念、資源使用、功能實(shí)現(xiàn)等方面有著顯著的差異。 1. 基本概念 1.1 FreeRTOS FreeRTOS 是一個(gè)小型的、可裁剪
    的頭像 發(fā)表于 09-02 14:13 ?3018次閱讀

    freertos和rtthread哪一個(gè)更好

    在嵌入式系統(tǒng)開(kāi)發(fā)中,選擇合適的實(shí)時(shí)操作系統(tǒng)(RTOS)對(duì)于項(xiàng)目的成功至關(guān)重要。FreeRTOS和RT-Thread是兩個(gè)非常流行的開(kāi)源RTOS,它們各自具有獨(dú)特的特點(diǎn)和優(yōu)勢(shì)。 1. 簡(jiǎn)介
    的頭像 發(fā)表于 09-02 14:06 ?7151次閱讀