<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
在FreeRTOS移植到Cortex-M3硬體平臺的文章中,我們已經見過任務建立API,但那篇文章的重點在於如何移植FreeRTOS,本文將重點放在任務的建立和刪除API函數上面。
任務建立和刪除API函數位於檔案task.c中,需要包含task.h標頭檔案。
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()函數具有更大的靈活性。
pvTaskCode
:指標,指向任務函數的入口。任務永遠不會返回(位於死迴圈內)。該引數型別TaskFunction_t定義在檔案projdefs.h中,定義為:typedefvoid (*TaskFunction_t)( void * )。
pcName
:任務描述。主要用於偵錯。字串的最大長度由宏configMAX_TASK_NAME_LEN指定,該宏位於FreeRTOSConfig.h檔案中。
usStackDepth
:指定任務堆疊大小,能夠支援的堆疊變數數量,而不是位元組數。比如,在16位元寬度的堆疊下,usStackDepth定義為100,則實際使用200位元組堆疊儲存空間。堆疊的寬度乘以深度必須不超過size_t型別所能表示的最大值。比如,size_t為16位元,則可以表示的最大值是65535。
pvParameters
:指標,當任務建立時,作為一個引數傳遞給任務。
uxPriority
:任務的優先順序。具有MPU支援的系統,可以通過置位優先順序引數的portPRIVILEGE_BIT位,隨意的在特權(系統)模式下建立任務。比如,建立一個優先順序為2的特權任務,引數uxPriority可以設定為( 2 | portPRIVILEGE_BIT )。
pvCreatedTask
:用於回傳一個控制程式碼(ID),建立任務後可以使用這個控制程式碼參照任務。
&&如果任務成功建立並加入就緒列表函數返回pdPASS,否則函數返回錯誤碼,具體參見projdefs.h。
/* 建立任務. */ 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 ); } }
voidvTaskDelete( TaskHandle_t xTask );
從RTOS核心管理器中刪除一個任務。任務刪除後將會從就緒、阻塞、暫停和事件列表中移除。在檔案FreeRTOSConfig.h中,必須定義宏INCLUDE_vTaskDelete 為1,本函數才有效。
注:被刪除的任務,其在任務建立時由核心分配的儲存空間,會由空閒任務釋放。如果有應用程式呼叫xTaskDelete(),必須保證空閒任務獲取一定的微控制器處理時間。任務程式碼自己分配的記憶體是不會自動釋放的,因此刪除任務前,應該將這些記憶體釋放。
xTask:被刪除任務的控制程式碼。為NULL表示刪除當前任務。
以上就是FreeRTOS實時作業系統的任務建立和刪除的詳細內容,更多關於FreeRTOS任務建立和刪除的資料請關注it145.com其它相關文章!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45