精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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ù)實(shí)現(xiàn)和控制塊

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

任務(wù)實(shí)現(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ù)實(shí)際情況定義。

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

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

(4)、FreeRTOS 的延時(shí)函數(shù),此處不一定要用延時(shí)函數(shù),其他只要能讓 FreeRTOS 發(fā)生任務(wù) 切換的 API 函數(shù)都可以,比如請(qǐng)求信號(hào)量、隊(duì)列等,甚至直接調(diào)用任務(wù)調(diào)度器。只不過最常用 的就是 FreeRTOS 的延時(shí)函數(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 的每個(gè)任務(wù)都有一些屬性需要存儲(chǔ),F(xiàn)reeRTOS 把這些屬性集合到一起用一個(gè)結(jié)構(gòu)體來表示,這個(gè)結(jié)構(gòu)體叫做任務(wù)控制塊:TCB_t,在使用函數(shù) xTaskCreate()創(chuàng)建任務(wù)的時(shí)候就會(huì)自動(dòng)的給每個(gè)任務(wù)分配一個(gè)任務(wù)控制塊。

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

任務(wù)堆棧

FreeRTOS 之所以能正確的恢復(fù)一個(gè)任務(wù)的運(yùn)行就是因?yàn)橛腥蝿?wù)堆棧在保駕護(hù)航,任務(wù)調(diào)度器在進(jìn)行任務(wù)切換的時(shí)候會(huì)將當(dāng)前任務(wù)的現(xiàn)場(chǎng)(CPU 寄存器值等)保存在此任務(wù)的任務(wù)堆棧中,等到此任務(wù)下次運(yùn)行的時(shí)候就會(huì)先用堆棧中保存的值來恢復(fù)現(xiàn)場(chǎng),恢復(fù)現(xiàn)場(chǎng)以后任務(wù)就會(huì)接著從上次中斷的地方開始運(yùn)行。

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

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

    關(guān)注

    5072

    文章

    19026

    瀏覽量

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

    關(guān)注

    3

    文章

    4308

    瀏覽量

    62445
  • FreeRTOS
    +關(guān)注

    關(guān)注

    12

    文章

    483

    瀏覽量

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

    關(guān)注

    0

    文章

    5

    瀏覽量

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

    關(guān)注

    1

    文章

    20

    瀏覽量

    8532
收藏 人收藏

    評(píng)論

    相關(guān)推薦

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

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

    FreeRTOS中的任務(wù)管理

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

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

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

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

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

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

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

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

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

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

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

    初入FreeRTOS

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

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

    功能,初學(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ǔ)知識(shí)

    FreeRTOS任務(wù)詳解

    詳細(xì)講解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ù)主要實(shí)現(xiàn)任務(wù)延時(shí)、任務(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 ?1545次閱讀
    <b class='flag-5'>freeRTOS</b>的<b class='flag-5'>任務(wù)</b>

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

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

    FreeRTOS任務(wù)通知簡(jiǎn)介

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

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

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