在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

3天內不再提示

任務調度開源代碼是什么

汽車電子技術 ? 來源:大橙子瘋嵌入式 ? 作者:大橙子瘋 ? 2023-02-15 14:53 ? 次閱讀

1、前言

通過[嵌入式軟件架構設計-任務調度]了解到 MCU 的三種任務調度:前后臺順序執(zhí)行法、時間片論法和操作系統(tǒng),下面介紹一個基于時間片論法的任務調度模塊開源代碼。

2、介紹

代碼主要特點有:

  • 適用于裸機平臺
  • 移植簡單,三個核心函數(shù),初始化、啟動和任務調度管理
  • 可動態(tài)地添加/刪除普通任務,也能添加/刪除中斷任務
  • 普通任務具備簡單的調度優(yōu)先級功能
  • 實現(xiàn)了簡單的 MCU 負載率計算,根據負載率可參考評估系統(tǒng)的實時性和響應性

實現(xiàn)思路:

  • 通過1ms定時器中斷服務函數(shù)進行任務調度計時和任務狀態(tài)就緒切換
  • 普通任務在主循環(huán)中判斷就緒狀態(tài)并執(zhí)行,而中斷任務則在中斷服務函數(shù)中判斷就緒狀態(tài)并執(zhí)行
  • 普通任務在創(chuàng)建時會根據優(yōu)先級在普通任務列表中進行排序,優(yōu)先級越高的函數(shù)在列表中越靠前
  • 當正在執(zhí)行的普通任務每次執(zhí)行完畢后,都會重新從普通任務列表中從頭開始判斷狀態(tài)并執(zhí)行,從而實現(xiàn)調度優(yōu)先級功能(并非搶占式)
  • 根據普通空閑任務運行次數(shù)和中斷空閑任務運行次數(shù)得到 MCU 的負載率計算

3、代碼示例

源文件部分代碼如下

/**
  * @brief      創(chuàng)建新的任務調度
  *
  * @note       任務函數(shù)不能被阻塞,盡量保證任務執(zhí)行的時間小于 1ms,且調度周期一定要大于調度函數(shù)任務耗時
  * @param[in]  pfnTask 回調任務函數(shù)
  * @param[in]  time    調度周期, 單位ms.
  * @param[in]  priority 調度優(yōu)先級 5-250, 其他預留, 值越小, 優(yōu)先級越高
  */
void cTASK_Creat(TaskRunCB pfnTask, uint16_t time, uint8_t priority)
{
    int i, j;

    if (priority < 5)
    {
        priority = 5;
    }

    if (priority > 250)
    {
        priority = 250;
    }

    for (i = 0; i < CTASK_SUPPORT_NUM; i++)
    {
        if (sg_tTaskManage.task[i].priority < priority)
        {
            continue;
        }

        if (sg_tTaskManage.task[i].isUsed)
        {
            for (j = CTASK_SUPPORT_NUM - 1; j > i; j--)
            {
                sg_tTaskManage.task[j] = sg_tTaskManage.task[j - 1];
                sg_tTaskManage.task[j - 1].isUsed = false;
            }
        }

        sg_tTaskManage.task[i].isUsed = true;
        sg_tTaskManage.task[i].isRunnig = false;
        sg_tTaskManage.task[i].itvTime = time;
        sg_tTaskManage.task[i].pfnTaskHook = pfnTask;
        sg_tTaskManage.task[i].timer = time;
        sg_tTaskManage.task[i].priority = priority;
        break;
    }
}

頭文件接口定義

/* Exported types ----------------------------------------------------------------------------------------------------*/

typedef void (*TaskRunCB)(void);

/* Exported constants ------------------------------------------------------------------------------------------------*/
/* Exported macro ----------------------------------------------------------------------------------------------------*/
/* Exported functions ------------------------------------------------------------------------------------------------*/

extern void cTASK_Init(void);
extern void cTASK_Remarks(void);
extern void cTASK_Start(void);

extern void cTASK_Creat(TaskRunCB pfnTask, uint16_t time, uint8_t priority);
extern void cTASK_Destory(TaskRunCB pfnTask);

extern void cTASK_IsrCreat(TaskRunCB pfnTask, uint16_t time);
extern void cTASK_IsrDestory(TaskRunCB pfnTask);

extern uint8_t cTASK_GetLoadRate(void);
extern uint32_t cTASK_GetSysTimer(void);

4、下載鏈接

下載鏈接可復制

https://gitee.com/const-zpc/cTask
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • mcu
    mcu
    +關注

    關注

    146

    文章

    17846

    瀏覽量

    360540
  • 操作系統(tǒng)

    關注

    37

    文章

    7095

    瀏覽量

    124964
  • 開源代碼
    +關注

    關注

    0

    文章

    37

    瀏覽量

    3157
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    基于OMPL的運動規(guī)劃介紹與教程_ROS_開源代碼1 #開源代碼

    機器人開源硬件源代碼代碼控制算法開源代碼
    薪盡火傳
    發(fā)布于 :2022年08月24日 16:28:03

    基于OMPL的運動規(guī)劃介紹與教程_ROS_開源代碼 2#開源代碼

    機器人開源硬件源代碼代碼控制算法開源代碼
    薪盡火傳
    發(fā)布于 :2022年08月24日 16:28:41

    基于OMPL的運動規(guī)劃介紹與教程_ROS_開源代碼3 #開源代碼

    機器人開源硬件源代碼代碼控制算法開源代碼
    薪盡火傳
    發(fā)布于 :2022年08月24日 16:29:46

    基于OMPL的運動規(guī)劃介紹與教程_ROS_開源代碼4 #開源代碼

    機器人開源硬件源代碼代碼控制算法開源代碼
    薪盡火傳
    發(fā)布于 :2022年08月24日 16:29:51

    Arduino 的開源代碼 在哪找

    各位哥哥姐姐,姐夫大嫂,有誰能告訴我 Arduino 的開源代碼 在哪找 ?小弟不勝感激!!
    發(fā)表于 08-25 13:52

    簡單的任務調度代碼

    通過定時器節(jié)拍控制任務執(zhí)行周期,此代碼的中斷函數(shù)時AVR的簡單的任務調度.rar (2.4 KB )
    發(fā)表于 06-12 04:35

    FreeRTOS如何使用delay作為系統(tǒng)延時、任務調度

    請教一個問題,最近在學習使用FreeRTOS,想像原子一樣在delay.c里添加RTOS的系統(tǒng)支持,即使用tick時鐘作延時?,F(xiàn)在有幾個問題:1、在啟動任務調度器前,如果調用了delay_ms
    發(fā)表于 06-10 04:37

    DSO138學習型示波器的開源代碼

    DLO-138是針對DSO138學習型示波器的開源代碼,如果你希望對138軟件進行修改(或者增加通道),那么基于這個工程應該是不錯的。步驟:1 準備工作下載開源代碼DLO-138:安裝arduino1.8.5(高版本可能支持stm32有問題)下載Arduino_STM32
    發(fā)表于 08-06 09:23

    調度器的原理及其任務調度代碼實現(xiàn)

    、超級循環(huán)2、時間片與時標3、調度算法介紹1)時間片輪轉調度2)強制試調度4、注意事項所有任務的執(zhí)行時間不能超過時標的時間三、任務
    發(fā)表于 02-17 07:07

    你了解RT-Thread中的啟動任務調度時機嗎

    中斷?仔細閱讀跟蹤代碼發(fā)現(xiàn),在切換到第一個任務時候,使用的api是rt_hw_context_switch_to,閱讀其源代碼,可以發(fā)現(xiàn)在最后一句,通過恢復PC LR跳轉到目標任務,于
    發(fā)表于 02-14 16:09

    μC/OS-II 任務調度機制的改進

    介紹μC/OS-II 任務調度機制,并提出一種改進方法,使μC/OS-II變成一個兼?zhèn)鋵崟r與分時任務調度機制的操作系統(tǒng); 論述改進后系統(tǒng)的特點和要注意的問題,給出部分
    發(fā)表于 04-15 11:21 ?14次下載

    四軸開源代碼IAR

    四軸飛行器開源 源代碼IAR需要的自行下載吧。
    發(fā)表于 03-31 15:26 ?5次下載

    任務調度代碼

    任務調度代碼,感興趣的小伙伴們可以看看。
    發(fā)表于 07-13 16:55 ?22次下載

    MWC四軸開源代碼免費下載

    本文檔的主要內容詳細介紹的是MWC四軸開源代碼免費下載。
    發(fā)表于 03-31 08:00 ?20次下載

    開源鴻蒙】下載OpenHarmony 4.1 Release源代碼

    本文介紹了如何下載開源鴻蒙(OpenHarmony)操作系統(tǒng) 4.1 Release版本的源代碼,該方法同樣可以用于下載OpenHarmony最新開發(fā)版本(master分支)或者4.0 Release、3.2 Release等發(fā)布版本的
    的頭像 發(fā)表于 04-27 23:16 ?1586次閱讀
    【<b class='flag-5'>開源</b>鴻蒙】下載OpenHarmony 4.1 Release<b class='flag-5'>源代碼</b>
    主站蜘蛛池模板: 99久久综合狠狠综合久久男同 | 看片福利 | 国内精品久久久久久久久野战 | 99精品国产在热久久 | 久久成人国产精品青青 | 欧美18videosex性欧美69 | 亚洲地址一地址二地址三 | 天天草天天 | 欧美网色 | 日韩精品视频免费在线观看 | 操美女大逼逼 | 性久久久久久久久久 | 视频 在线 | 黄色毛片播放 | 夜夜爽一区二区三区精品 | 嫩草影院永久入口在线观看 | 色老头影视 | 五月天婷婷免费视频 | 亚洲不卡视频在线观看 | 国产三片理论电影在线 | 性感美女逼 | 亚洲欧美人成网站综合在线 | 欧美网站视频 | 综合亚洲一区二区三区 | 在线观看永久免费视频网站 | 高清人妖shemale japan | 国产成人毛片亚洲精品不卡 | 狠狠的操| 成人欧美一区二区三区白人 | 成人a毛片视频免费看 | 日韩亚洲人成在线综合日本 | 男人天堂综合网 | 欲色影视| 亚洲欧美日韩在线观看你懂的 | 欧美一级做一级做片性十三 | 日本69sex护士hd | 国产高清亚洲 | 国产性片在线 | 欧美成网 | 国产成人综合欧美精品久久 | 在线日韩一区 |