一本精品热在线视频,久久免费视频分类,精品婷婷乱码久久久久久蜜桃,在线可以免费观看的Av

<mark id="vd61v"><dl id="vd61v"></dl></mark>
    <sub id="vd61v"><ol id="vd61v"></ol></sub>

  • <sub id="vd61v"><ol id="vd61v"></ol></sub>

    新聞中心

    EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > uC/OS-II 學習筆記之:任務刪除

    uC/OS-II 學習筆記之:任務刪除

    作者: 時間:2016-09-12 來源:網(wǎng)絡 收藏

    一、概念:任務的刪除就是把任務由運行態(tài)或就緒態(tài)置于睡眠態(tài),是任務創(chuàng)建的逆過程。

    本文引用地址:http://www.ekcard.cn/article/201609/303413.htm

    二、操作:具體操作就是把將待刪除的任務的任務控制塊從任務控制鏈表中刪除,并歸還給空任務控制鏈表,

    然后在任務就緒表中把該任務的就緒狀態(tài)位置為0,這樣任務就不會再被調(diào)度器調(diào)用了。

    一般情況,為了安全起見,我們先在某個任務中提出刪除任務的請求,然后再在將待刪除任務中執(zhí)行刪除操作,

    即由待刪除任務自己刪除自己,而提出刪除任務請求的任務只負責提出請求。這樣的好處是可以讓待刪除任務

    在合適的時候刪除自己,以利于在刪除自身之前釋放掉其占用的資源。

    三、函數(shù)

    (1)請求刪除任務函數(shù):OSTaskDelReq(prio)//prio為待刪除任務的優(yōu)先級別

    (2)提出刪除請求的任務在調(diào)用該函數(shù)時,具體使用如下:

    //只有當待刪除任務不存在了,就跳出循環(huán)

    while (OSTaskDelReq(1) != OS_TASK_NOT_EXIST)

    {

    OSTimeDly(1);//延時一個時鐘節(jié)拍

    }

    (3)待刪除任務在調(diào)用該函數(shù)時,具體使用如下:

    if (OSTaskDelReq(OS_PRIO_SELF) == OS_TASK_DEL_REQ)

    {

    OSTaskDel(OS_PRIO_SELF);//刪除任務自身

    }

    四、典型應用

    //調(diào)用刪除任務函數(shù)的任務

    //任務1,設優(yōu)先級別為1

    void TaskLed0(void *pdata)

    {

    while (1)

    {

    LED0 = !LED0;

    OSTimeDlyHMSM(0, 0, 0, 400);

    while (OSTaskDelReq(2) != OS_TASK_NOT_EXIST)

    {

    OSTimeDly(1);//延時一個時鐘節(jié)拍

    }

    }

    }

    //被刪除任務

    //任務2,設優(yōu)先級別為2

    void TaskLed1(void *pdata)

    {

    while (1)

    {

    LED1 = !LED1;

    OSTimeDlyHMSM(0, 0, 0, 400);

    //判斷是否有其它任務發(fā)出了刪除自身的請求

    if (OSTaskDelReq(OS_PRIO_SELF) == OS_TASK_DEL_REQ)

    {

    OSTaskDel(OS_PRIO_SELF);//刪除任務自身

    }

    }

    }

    解析:這就是一個在任務1里提出刪除任務2的請求,然后任務2刪除自身的例子。

    參: 任哲 《嵌入式實時操作系統(tǒng)-II原理及應用》

    參: 盧有亮 《嵌入式實時操作系統(tǒng)原理與實踐》



    關鍵詞: uC/OS

    評論


    相關推薦

    技術(shù)專區(qū)

    關閉