欧美性猛交xxxx免费看_牛牛在线视频国产免费_天堂草原电视剧在线观看免费_国产粉嫩高清在线观看_国产欧美日本亚洲精品一5区

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

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

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

FreeRTOS任務(wù)實現(xiàn)和控制塊

麥辣雞腿堡 ? 來源:嵌入式Linux系統(tǒng)開發(fā) ? 作者:嵌入式Linux系統(tǒng)開 ? 2023-09-28 11:28 ? 次閱讀

任務(wù)實現(xiàn)

FreeRTOS 官方給出的任務(wù)函數(shù)模板如下:

void vATaskFunction(void *pvParameters)
{
  for( ; ; )
  {
    --任務(wù)應(yīng)用程序-- 
    vTaskDelay(); 
  }

  vTaskDelete(NULL); 
}

(1)、任務(wù)函數(shù)本質(zhì)也是函數(shù),所以肯定有任務(wù)名什么的,不過這里我們要注意:任務(wù)函數(shù) 的返回類型一定要為 void 類型,也就是無返回值,而且任務(wù)的參數(shù)也是 void 指針類型的!任務(wù) 函數(shù)名可以根據(jù)實際情況定義。

(2)、任務(wù)的具體執(zhí)行過程是一個大循環(huán),for(; ; )就代表一個循環(huán),作用和 while(1)一樣,博主習(xí)慣用 while(1)。

(3)、循環(huán)里面就是真正的任務(wù)代碼了,此任務(wù)具體要干的活就在這里實現(xiàn)!

(4)、FreeRTOS 的延時函數(shù),此處不一定要用延時函數(shù),其他只要能讓 FreeRTOS 發(fā)生任務(wù) 切換的 API 函數(shù)都可以,比如請求信號量、隊列等,甚至直接調(diào)用任務(wù)調(diào)度器。只不過最常用 的就是 FreeRTOS 的延時函數(shù)。

(5)、任務(wù)函數(shù)一般不允許跳出循環(huán),如果一定要跳出循環(huán)的話在跳出循環(huán)以后一定要調(diào)用 函數(shù) vTaskDelete(NULL)刪除此任務(wù)!

FreeRTOS 的任務(wù)函數(shù)和 UCOS 的任務(wù)函數(shù)模式基本相同的,不止 FreeRTOS,其他 RTOS 的任務(wù)函數(shù)基本也是這種方式的。

任務(wù)控制塊

FreeRTOS 的每個任務(wù)都有一些屬性需要存儲,F(xiàn)reeRTOS 把這些屬性集合到一起用一個結(jié)構(gòu)體來表示,這個結(jié)構(gòu)體叫做任務(wù)控制塊:TCB_t,在使用函數(shù) xTaskCreate()創(chuàng)建任務(wù)的時候就會自動的給每個任務(wù)分配一個任務(wù)控制塊。

此結(jié)構(gòu)體在文件 tasks.c 中有定義。類似于 Linux 的 task_struct 結(jié)構(gòu)體,保存進程信息用的,每個進程有一個。

任務(wù)堆棧

FreeRTOS 之所以能正確的恢復(fù)一個任務(wù)的運行就是因為有任務(wù)堆棧在保駕護航,任務(wù)調(diào)度器在進行任務(wù)切換的時候會將當前任務(wù)的現(xiàn)場(CPU 寄存器值等)保存在此任務(wù)的任務(wù)堆棧中,等到此任務(wù)下次運行的時候就會先用堆棧中保存的值來恢復(fù)現(xiàn)場,恢復(fù)現(xiàn)場以后任務(wù)就會接著從上次中斷的地方開始運行。

創(chuàng)建任務(wù)的時候需要給任務(wù)指定堆棧,如果使用的函數(shù) xTaskCreate()創(chuàng)建任務(wù)(動態(tài)方法)的話那么任務(wù)堆棧就會由函數(shù) xTaskCreate()自動創(chuàng)建。如果使用函數(shù) xTaskCreateStatic()創(chuàng)建任務(wù)(靜態(tài)方法)的話就需要程序員自行定義任務(wù)堆棧,然后堆棧首地址作為函數(shù)的參數(shù) puxStackBuffer 傳遞給函數(shù)。

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

    關(guān)注

    5096

    文章

    19192

    瀏覽量

    308066
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4349

    瀏覽量

    63027
  • FreeRTOS
    +關(guān)注

    關(guān)注

    12

    文章

    484

    瀏覽量

    62423
  • 控制塊
    +關(guān)注

    關(guān)注

    0

    文章

    5

    瀏覽量

    6403
  • 任務(wù)
    +關(guān)注

    關(guān)注

    1

    文章

    20

    瀏覽量

    8567
收藏 人收藏

    評論

    相關(guān)推薦

    FreeRTOS介紹與基礎(chǔ)任務(wù)創(chuàng)建

    本篇介紹FreeRTOS與基礎(chǔ)任務(wù)創(chuàng)建
    的頭像 發(fā)表于 09-26 09:00 ?2513次閱讀
    <b class='flag-5'>FreeRTOS</b>介紹與基礎(chǔ)<b class='flag-5'>任務(wù)</b>創(chuàng)建

    FreeRTOS中的任務(wù)管理

    任務(wù)FreeRTOS 中最基本的調(diào)度單元,它是一段可執(zhí)行的代碼,可以獨立運行。FreeRTOS 中的任務(wù)是基于優(yōu)先級的搶占式調(diào)度,優(yōu)先級高的任務(wù)
    的頭像 發(fā)表于 11-27 17:03 ?1094次閱讀

    請教:有SPC560B的多任務(wù)實時系統(tǒng)的例程嗎(freertos

    請教:有SPC560B的多任務(wù)實時系統(tǒng)的例程嗎(freertos
    發(fā)表于 01-15 17:04

    靜態(tài)方法創(chuàng)建任務(wù)刪除后內(nèi)存如何回收?

    最近學(xué)習(xí)原子哥的FreeRTOS例程,在靜態(tài)方法創(chuàng)建和刪除任務(wù)實驗中,任務(wù)刪除后好像沒有釋放內(nèi)存的部分。是不是一定是Malloc分配的內(nèi)存才有free對應(yīng),像例程中這種//任務(wù)堆棧
    發(fā)表于 06-19 06:23

    在STM32下完成FreeRTOS的多任務(wù)程序開發(fā)

    基于在STM32下完成FreeRTOS的多任務(wù)程序開發(fā) 序言 二.項目說明三.實戰(zhàn)過程 1)實驗器材 2)開始實戰(zhàn) 3)任務(wù)實現(xiàn) 4)效果展示四. 結(jié)語 序言(一)FreeRTOS簡介
    發(fā)表于 08-09 07:27

    什么是多任務(wù)系統(tǒng)?FreeRTOS任務(wù)與協(xié)程簡析

    功能,初學(xué)者必須先掌握——任務(wù)的創(chuàng)建、刪除、掛起和恢復(fù)等操作。本章節(jié)分為如下幾部分:*什么是多任務(wù)系統(tǒng)*FreeRTOS任務(wù)與協(xié)程*初次使用*任務(wù)
    發(fā)表于 02-18 06:38

    如何輕松幾步實現(xiàn)在STM32上運行FreeRTOS任務(wù)

    輕松幾步實現(xiàn)在STM32上運行FreeRTOS任務(wù)
    的頭像 發(fā)表于 03-01 12:07 ?8556次閱讀
    如何輕松幾步<b class='flag-5'>實現(xiàn)</b>在STM32上運行<b class='flag-5'>FreeRTOS</b><b class='flag-5'>任務(wù)</b>

    初入FreeRTOS

    源碼3、FreeRTOS移植操作三、在STM32下完成一個基于FreeRTOS的多任務(wù)程序1、任務(wù)要求2、任務(wù)實施3、
    發(fā)表于 12-06 21:06 ?40次下載
    初入<b class='flag-5'>FreeRTOS</b>

    (一)FreeRTOS學(xué)習(xí)之FreeRTOS任務(wù)基礎(chǔ)知識

    功能,初學(xué)者必須先掌握——任務(wù)的創(chuàng)建、刪除、掛起和恢復(fù)等操作。本章節(jié)分為如下幾部分:*什么是多任務(wù)系統(tǒng)*FreeRTOS任務(wù)與協(xié)程*初次使用*任務(wù)
    發(fā)表于 12-23 19:57 ?3次下載
    (一)<b class='flag-5'>FreeRTOS</b>學(xué)習(xí)之<b class='flag-5'>FreeRTOS</b><b class='flag-5'>任務(wù)</b>基礎(chǔ)知識

    FreeRTOS任務(wù)詳解

    詳細講解freeRTOS任務(wù)
    發(fā)表于 12-23 20:01 ?11次下載
    <b class='flag-5'>FreeRTOS</b>的<b class='flag-5'>任務(wù)</b>詳解

    FreeRTOS系列第11篇---FreeRTOS任務(wù)控制

    FreeRTOS任務(wù)控制API函數(shù)主要實現(xiàn)任務(wù)延時、任務(wù)掛起、解除任務(wù)掛起、
    發(fā)表于 01-26 17:54 ?12次下載
    <b class='flag-5'>FreeRTOS</b>系列第11篇---<b class='flag-5'>FreeRTOS</b><b class='flag-5'>任務(wù)</b><b class='flag-5'>控制</b>

    freeRTOS任務(wù)

    freeRTOS系統(tǒng)的任務(wù)切換的具體過程最終都是在pendSV中斷服務(wù)函數(shù)里面完成的。
    的頭像 發(fā)表于 02-10 11:02 ?1703次閱讀
    <b class='flag-5'>freeRTOS</b>的<b class='flag-5'>任務(wù)</b>

    FreeRTOS任務(wù)間通信,怎么實現(xiàn)?

    FreeRTOS 是一個可裁剪、可剝奪型的多任務(wù)內(nèi)核,十分好用,而且沒有任務(wù)數(shù)限制,在此之前分析過很多了,簡單來說,FreeRTOS實時系統(tǒng)能夠創(chuàng)建多個獨立的
    的頭像 發(fā)表于 02-23 09:21 ?2186次閱讀

    FreeRTOS任務(wù)通知簡介

    個 32 位的通知值,任務(wù)控制中的成員變量 ulNotifiedValue 就是這個通知值。任務(wù)通知是一個事件,假如某個任務(wù)通知的接收
    的頭像 發(fā)表于 07-30 11:34 ?790次閱讀

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

    以下幾個因素: 系統(tǒng)資源 :FreeRTOS能夠支持的任務(wù)數(shù)量受到系統(tǒng)硬件資源的限制,特別是處理器的RAM大小和性能。RAM用于存儲任務(wù)控制
    的頭像 發(fā)表于 09-02 14:21 ?1239次閱讀