一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲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)不再提示

空閑任務(wù)鉤子函數(shù)詳解

麥辣雞腿堡 ? 來源:嵌入式Linux系統(tǒng)開發(fā) ? 作者:嵌入式Linux系統(tǒng)開 ? 2023-07-30 10:57 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

空閑任務(wù)鉤子函數(shù)詳解

1、鉤子函數(shù)

FreeRTOS中有多個(gè)鉤子函數(shù),鉤子函數(shù)類似回調(diào)函數(shù),當(dāng)某個(gè)功能(函數(shù))執(zhí)行的時(shí)候就會(huì)調(diào)用鉤子函數(shù),至于鉤子函數(shù)的具體內(nèi)容那就由用戶來編寫。如果不需要使用鉤子函數(shù)的話就什么也不用管,鉤子函數(shù)是一個(gè)可選功能,可以通過宏定義來選擇使用哪個(gè)鉤子函數(shù),可選的鉤子函數(shù)如表所示:

圖片

鉤子函數(shù)的使用方法基本相同,用戶使能相應(yīng)的鉤子函數(shù),然后自行根據(jù)實(shí)際需求編寫鉤子函數(shù)的內(nèi)容,下一節(jié)我們會(huì)以空閑任務(wù)鉤子函數(shù)為例講解如何使用鉤子函數(shù)。

2、空閑任務(wù)鉤子函數(shù)

在每個(gè)空閑任務(wù)運(yùn)行周期都會(huì)調(diào)用空閑任務(wù)鉤子函數(shù),如果想在空閑任務(wù)優(yōu)先級(jí)下處理某個(gè)任務(wù)有兩種選擇:

● 在空閑任務(wù)鉤子函數(shù)中處理任務(wù)。

不管什么時(shí)候都要保證系統(tǒng)中至少有一個(gè)任務(wù)可以運(yùn)行,因此絕對(duì)不能在空閑任務(wù)鉤子函數(shù)中調(diào)用任何可以阻塞空閑任務(wù)的 API 函數(shù),比如vTaskDelay(),或者其他帶有阻塞時(shí)間的信號(hào)量或隊(duì)列操作函數(shù)。

● 創(chuàng)建一個(gè)與空閑任務(wù)優(yōu)先級(jí)相同的任務(wù)。

創(chuàng)建一個(gè)任務(wù)是最好的解決方法,但是這種方法會(huì)消耗更多的 RAM

要使用空閑任務(wù)鉤子函數(shù)首先要在 FreeRTOSConfig.h 中將宏 configUSE_IDLE_HOOK 改為1,然后編寫空閑任務(wù)鉤子函數(shù)vApplicationIdleHook()。通常在空閑任務(wù)鉤子函數(shù)中將處理器設(shè)置為低功耗模式來節(jié)省電能,為了與 FreeRTOS 自帶的 Tickless模式做區(qū)分,這里我暫且將這種低功耗的實(shí)現(xiàn)方法稱之為通用低功耗模式(因?yàn)閹缀跛械?RTOS 系統(tǒng)都可以使用這種方法實(shí)現(xiàn)低功耗)。這種通用低功耗模式和
FreeRTOS 自帶的 Tickless 模式的區(qū)別我們通過下圖來對(duì)比分析一下。

圖片

圖中有三個(gè)任務(wù),它們分別為一個(gè)空閑任務(wù)(Idle),兩個(gè)用戶任務(wù)(Task1 和Task2),其中空閑任務(wù)一共有運(yùn)行了三次,分別為(1)、(2)、(3),其中 T1 到 T12 是 12 個(gè)時(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)注

    5152

    文章

    19675

    瀏覽量

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

    關(guān)注

    3

    文章

    4381

    瀏覽量

    64873
  • FreeRTOS
    +關(guān)注

    關(guān)注

    12

    文章

    493

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    ucosii空閑任務(wù)鉤子函數(shù)App_TaskIdleHook睡眠之后是不是只有喚醒才能執(zhí)行?

    static u16 cnt = 0;voidApp_TaskIdleHook (void){cnt++; __WFI;}在空閑任務(wù)鉤子函數(shù)增加睡眠指令,發(fā)現(xiàn)cnt++計(jì)數(shù)反而要比系統(tǒng)時(shí)間
    發(fā)表于 12-31 14:36

    菜鳥求助 u/Cos III 空閑任務(wù)鉤子函數(shù) 數(shù)據(jù)不會(huì)溢出的問題

    1、使用的精英版的官方歷程,稍微做了修改,把每次空閑任務(wù)鉤子函數(shù)里num++ 后的值用串口打印了出來,結(jié)果發(fā)現(xiàn)static int num定義的變量竟然可以超過65535.無法理解。2、還有個(gè)
    發(fā)表于 01-27 19:34

    Flask中的鉤子函數(shù)使用

    Flask鉤子函數(shù)(十一)
    發(fā)表于 08-01 07:04

    u/Cos III空閑任務(wù)鉤子函數(shù)static int num定義的變量竟然可以超過65535.

    使用的精英版的官方歷程,稍微做了修改,把每次空閑任務(wù)鉤子函數(shù)里num++ 后的值用串口打印了出來,結(jié)果發(fā)現(xiàn)static int num定義的變量竟然可以超過65535.無法理解。求大神指教
    發(fā)表于 03-11 04:37

    FreeRTOS檢測(cè)堆棧溢出,鉤子函數(shù)是回調(diào)到哪里?

    FreeRTOS中有個(gè)宏configCHECK_FOR_STACK_OVERFLOW用來檢測(cè)堆棧溢出,在檢測(cè)堆棧溢出后調(diào)用鉤子函數(shù),鉤子函數(shù)是回調(diào)到哪里,,是讓他回到檢測(cè)的地方么。
    發(fā)表于 07-28 07:28

    關(guān)于鉤子函數(shù),在CCS的編譯器里有哪幾個(gè)規(guī)則?

    如何對(duì)鉤子函數(shù)的使用進(jìn)行控制?關(guān)于鉤子函數(shù),在CCS的編譯器里有哪幾個(gè)規(guī)則?
    發(fā)表于 04-19 06:09

    為什么在鉤子函數(shù)中不能使用串口打印函數(shù)

    UCOSIII,STM32F107官方移植工程中,鉤子函數(shù)中不能使用串口打印函數(shù)APP_TRACE_INFO(); 未找到原因。
    發(fā)表于 08-23 07:14

    【每日一練】第六節(jié):空閑線程及兩個(gè)常用的鉤子函數(shù)

    本視頻為【每日一練】的第6節(jié)學(xué)習(xí)視頻,注:剛開始學(xué)習(xí)的童鞋請(qǐng)從第一節(jié)視頻開始打卡哦(本節(jié)視頻在下面打卡即可)學(xué)習(xí)任務(wù):1、線程退出后,資源在哪里被回收?(簡(jiǎn)答)2、可以在調(diào)度其鉤子函數(shù)中查看線程切換(判斷)打卡規(guī)則詳見:第二期【每日一練】來啦,16天入門RT-Thread
    發(fā)表于 08-28 19:15

    鉤子函數(shù)是什么?RT-Thread系統(tǒng)引入鉤子函數(shù)有何用處

    鉤子函數(shù),在線程切換和空閑線程循環(huán)中調(diào)用。內(nèi)存鉤子函數(shù),在分配或釋放內(nèi)存塊時(shí)調(diào)用。定時(shí)器鉤子函數(shù),在定時(shí)器超時(shí)時(shí)調(diào)用。函數(shù)說明rt_err_
    發(fā)表于 08-29 15:30

    NANO3.15無法進(jìn)入空閑線程鉤子函數(shù)該怎么辦

    使用NANO 3.15 keil5 ARMV6編譯 芯片STM32F767使用CUBE生成硬件初始化。HAL庫(kù)使用線程和軟件定時(shí)器正常。目前想要加入空閑線程鉤子函數(shù)來運(yùn)行看門狗喂狗函數(shù)。測(cè)試發(fā)現(xiàn)不進(jìn)
    發(fā)表于 09-07 10:50

    UCOS擴(kuò)展例程-UCOSIII空閑任務(wù)鉤子函數(shù)的使用

    UCOS擴(kuò)展例程-UCOSIII空閑任務(wù)鉤子函數(shù)的使用
    發(fā)表于 12-14 17:24 ?31次下載

    Zynq中使用FreeRTOS的空閑鉤子函數(shù)時(shí)在SDK中的設(shè)置

    本文介紹zynq中使用FreeRTOS的空閑鉤子函數(shù)時(shí)在SDK中的設(shè)置和一些說明
    發(fā)表于 03-09 14:33 ?2791次閱讀
    Zynq中使用FreeRTOS的<b class='flag-5'>空閑</b><b class='flag-5'>鉤子函數(shù)</b>時(shí)在SDK中的設(shè)置

    FreeRTOS_005_FreeRTOSConfig.h配置文件(二) HOOK鉤子函數(shù)

    FreeRTOS_005_FreeRTOSConfig.h配置文件(二)_HOOK鉤子函數(shù)
    的頭像 發(fā)表于 03-14 14:04 ?3737次閱讀
    FreeRTOS_005_FreeRTOSConfig.h配置文件(二) HOOK<b class='flag-5'>鉤子函數(shù)</b>

    實(shí)操RT-Thread系統(tǒng)CPU利用率功能添加

    除了在空閑任務(wù)可以設(shè)置鉤子函數(shù),還有可能在任務(wù)切換、系統(tǒng)啟動(dòng)、任務(wù)創(chuàng)建等等關(guān)鍵的地方設(shè)置,當(dāng)然了,這里的每一個(gè)
    的頭像 發(fā)表于 06-03 11:29 ?6882次閱讀
    實(shí)操RT-Thread系統(tǒng)CPU利用率功能添加

    RTOS中鉤子函數(shù)的用途及用法

    在很多操作系統(tǒng)中,都存在這樣一類API函數(shù)接口:HOOK函數(shù)(也叫鉤子函數(shù))。
    的頭像 發(fā)表于 10-23 16:25 ?777次閱讀
    RTOS中<b class='flag-5'>鉤子函數(shù)</b>的用途及用法