亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? os_time.c

?? SmallRTOSAVR.rar
?? C
字號:
/*********************************************************************************************************
**                                        Small RTOS
**                                   The Real-Time Kernel
**                           (c) Copyright 2002-2003, chenmingji
**                                     All Rights Reserved
**                                         V1.50.0
**
**--------------文件信息--------------------------------------------------------------------------------
**文   件   名: OS_time.c
**創(chuàng)   建   人: 陳明計
**最后修改日期: 2005年6月10日
**描        述: Small RTOS時間服務處理程序
**
**--------------歷史版本信息----------------------------------------------------------------------------
** 創(chuàng)建人: 陳明計
** 版  本: V1.00
** 日 期: 2005年6月10日
** 描 述: 基本完成全新的Small RTOS核
**
**------------------------------------------------------------------------------------------------------
** 修改人:
** 版  本:
** 日 期:
** 描 述:
**
**--------------當前版本修訂------------------------------------------------------------------------------
** 修改人: 焦進星
** 日 期: 2007年12月30日
** 描 述: 移植到AVR系列芯片,適用于atmega16/32等
**
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/

#define  IN_OS_TIME
#define  IN_OS
#include "..\APP\config.h"

OS_TCB              *OSTCBTimeDly;                  /* 超時延時任務鏈表 */
uint16              OSTickCnt;                      /* 當前計數(shù)初值 */
uint16              OSTickThisCnt;                  /* 當前計數(shù)剩余值*/

/*********************************************************************************************************
** 函數(shù)名稱: OS_TimeTickDel
** 功能描述: 將任務從延時隊列中刪除
** 輸 入: 無
** 輸 出: OS_NO_ERR
** 作 者: 陳明計
** 日 期: 2005年6月10日
**-------------------------------------------------------------------------------------------------------
** 修改人: 
** 日 期:  
**-------------------------------------------------------------------------------------------------------
********************************************************************************************************/
        uint8 OS_TimeTickDel(OS_TCB *Tcb)
{
    Tcb->OSTCBDly = 0;
    if (Tcb != OSTCBTimeDly)
    {
        if (Tcb->TcbPrev != NULL)
        {
            Tcb->TcbPrev->TcbNext = Tcb->TcbNext;
        }
        if (Tcb->TcbNext != NULL)
        {
            Tcb->TcbNext->TcbPrev = Tcb->TcbPrev;
        }
    }
    else
    {
        OSTCBTimeDly = Tcb->TcbNext;
    }
    Tcb->TcbPrev = NULL;
    Tcb->TcbNext = NULL;

    if (Tcb->OSTCBPrio < OSHighPrio)
    {
        OSHighPrio = Tcb->OSTCBPrio;
    }
    return OS_NO_ERR;
}

/*********************************************************************************************************
** 函數(shù)名稱: OS_TimeTickAdd
** 功能描述: 將任務加入延時隊列中
** 輸 入: 無
** 輸 出: OS_NO_ERR
** 作 者: 陳明計
** 日 期: 2005年6月10日
**-------------------------------------------------------------------------------------------------------
** 修改人: 
** 日 期:
**-------------------------------------------------------------------------------------------------------
********************************************************************************************************/
        uint8  OS_TimeTickAdd(OS_TCB *Tcb)
{
    /* 加入延時隊列中 */
    Tcb->TcbPrev = NULL;
    if (OSTCBTimeDly != NULL)
    {
        if (Tcb != OSTCBTimeDly)
        {
            Tcb->TcbNext = OSTCBTimeDly;
            OSTCBTimeDly->TcbPrev = Tcb;
            OSTCBTimeDly = Tcb;
        }
    }
    else
    {
        Tcb->TcbNext = NULL;
        Tcb->TcbPrev = NULL;
        OSTCBTimeDly = Tcb;
    }
    return OS_NO_ERR;
}

/*********************************************************************************************************
** 函數(shù)名稱: OS_TimeTick
** 功能描述: 與OSTimeTick一樣,不過不進行任務切換
** 輸 入: 無
** 輸 出: OS_NO_ERR
** 作 者: 陳明計
** 日 期: 2005年6月10日
**-------------------------------------------------------------------------------------------------------
** 修改人: 
** 日 期:
**-------------------------------------------------------------------------------------------------------
********************************************************************************************************/
        uint8  OS_TimeTick(void)
{
    uint16 Min,ThisCnt;
    OS_TCB_PRIO *tcbp;
    OS_TCB *tcb,*NextTcb;
    
    tcb = OSTCBTimeDly;

    /* 減少任務的延時,同時收縮下次最小的執(zhí)行間隔 */
    ThisCnt = OSTickThisCnt - OSTickCnt;
    Min = 0;
    Min--;
    while (tcb != NULL)
    {
        NextTcb = tcb->TcbNext;
       if ((tcb->OSTCBStat & OS_STAT_DLY) != 0)
        {
           if (tcb->OSTCBDly > ThisCnt )
            {
                tcb->OSTCBDly -= ThisCnt;
                if (Min > tcb->OSTCBDly)
                {
                    Min = tcb->OSTCBDly;
                }
            }
            else
            {
                tcb->OSTCBStat = 0;                /* 任務進入運行狀態(tài) */
                OS_TimeTickDel(tcb);               /* 從等待延時隊列中刪除 */
                _OS_TaskResume(tcb);               /* 加入優(yōu)先級鏈表 */
            }
        }
        tcb = NextTcb;
    }
    
    OSFindNextRunningTask();
    
    /* 如果優(yōu)先級未變,則看是否需要輪詢  */
    tcbp = &(OSTCBPrioTbl[OSHighPrio]);
    if (OSTCBCur == OSTCBHighRdy)
    {
        if (tcbp->OSTCBDly > OSTickThisCnt)
        {
            tcbp->OSTCBDly -= OSTickThisCnt;
        }
        else
        {
            if (tcbp->OSTCBDly != 0)
            {
                tcbp->OSTCBDly = tcbp->OSTCBDlyReload;
                OSTCBHighRdy = tcbp->TcbNext->TcbNext;
                tcbp->TcbNext = OSTCBHighRdy;
            }
        }
        if (tcbp->OSTCBDly != 0)
        if (tcbp->OSTCBDly < Min)
        {
            Min = tcbp->OSTCBDly;
        }
    }
    /* 設置下次延時參數(shù) */
    OSTickCnt = Min;
    OSTickThisCnt = Min;
    return OS_NO_ERR;
}

/*********************************************************************************************************
** 函數(shù)名稱: OSTimeTick
** 功能描述: 系統(tǒng)時鐘處理函數(shù),處理各個任務的延時
** 輸 入: 無
** 輸 出: OS_NO_ERR
** 作 者: 陳明計
** 日 期: 2005年6月10日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**-------------------------------------------------------------------------------------------------------
********************************************************************************************************/
         uint8  OSTimeTick(void)
{  
	
    OS_ENTER_CRITICAL();
    if (OSTickCnt != 0)
    if (--OSTickCnt ==0)
    {  
        OS_TimeTick();
        if (OSIntNesting == 0)              /* 是否是中斷中調(diào)用 */
        if (OSTCBCur != OSTCBHighRdy)
        {
                                            /* 進行任務調(diào)度 */
            OS_TASK_SW();
        }
    }
    OS_EXIT_CRITICAL();
    return OS_NO_ERR;
}

/*********************************************************************************************************
** 函數(shù)名稱: OS_TimeDly
** 功能描述: 與OSTimeDly一樣,不過不進行任務切換
** 輸 入:  ticks : 等待超時時的系統(tǒng)嘀嗒數(shù)
** 輸 出 : OS_NO_ERR
** 作 者: 陳明計
** 日 期: 2005年6月10日
**-------------------------------------------------------------------------------------------------------
** 修改人: 
** 日 期:
**-------------------------------------------------------------------------------------------------------
********************************************************************************************************/
        uint8 OS_TimeDly(uint16 Ticks)
{
    OS_TimeTick();
    OSTCBCur->OSTCBDly = Ticks;                 /* 設置超時時間         */
    OSTCBCur->OSTCBStat |= OS_STAT_DLY;         /* 任務進入等待延時狀態(tài)     */

    _OS_TaskSuspend(OSTCBCur);                  /* 從優(yōu)先級鏈表中刪除 */
    OS_TimeTickAdd(OSTCBCur);                   /* 加到等待鏈表中 */
    if (OSTickThisCnt > Ticks)
    {
        OSTickThisCnt = Ticks;
        OSTickCnt = Ticks;
    }
    return OS_NO_ERR;
}

/*********************************************************************************************************
** 函數(shù)名稱: OSTimeDly
** 功能描述: 系統(tǒng)等待函數(shù),任務調(diào)用此函數(shù)可以等待一定時間
** 輸 入:  ticks : 等待超時時的系統(tǒng)嘀嗒數(shù)
** 輸 出 : OS_NO_ERR:成功
**          OS_ERR_PEND_ISR:在中斷中延時
** 作 者: 陳明計
** 日 期: 2005年6月10日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**-------------------------------------------------------------------------------------------------------
********************************************************************************************************/
        uint8 OSTimeDly(uint16 ticks)
{
    if (OSIntNesting != 0)
    {
        return OS_ERR_PEND_ISR;
    }
    if (ticks != 0)
    {
        OS_ENTER_CRITICAL();
        OS_TimeDly(ticks);
        OSSched();                                  /* 開始任務切換         */
        OS_EXIT_CRITICAL();
    }
    return OS_NO_ERR;
}

/*********************************************************************************************************
** 函數(shù)名稱: OSTimeDlyResume
** 功能描述: 讓處在延時期的任務結束延時
** 輸 入:  TaskID : 任務ID
** 輸 出 : OS_NO_ERR:成功
**          OS_TASKID_INVALID:目標任務不存在
** 作 者: 陳明計
** 日 期: 2005年6月10日
**-------------------------------------------------------------------------------------------------------
** 修改人: 
** 日 期:
**-------------------------------------------------------------------------------------------------------
********************************************************************************************************/
        uint8 OSTimeDlyResume(TASK_ID TaskID)
{
    OS_TCB *tcb;
    uint8 Rt;
    
    Rt = OS_TASKID_INVALID;
    if (TaskID < OS_MAX_TASKS)
    {
        tcb = &(OSTCBTbl[TaskID]);
        //Rt = OS_TASKID_INVALID;
        OS_ENTER_CRITICAL();
        if (tcb->OSTCBStat != OS_STAT_DEATH)
        {
            if ((tcb->OSTCBStat &  ~OS_STAT_SUSPEND) == OS_STAT_DLY)
            {
                tcb->OSTCBStat = 0;
                OS_TimeTickDel(tcb);                    /* 從等待延時隊列中刪除 */

                _OS_TaskResume(tcb);                    /* 加入優(yōu)先級鏈表 */
                OSSched();                              /* 開始任務切換         */
            }
            Rt = OS_NO_ERR;
        }        
        OS_EXIT_CRITICAL();
    }
    return Rt;
}

/*********************************************************************************************************
**                            End Of File
********************************************************************************************************/

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91丨九色丨尤物| 欧美激情中文字幕| 中文在线免费一区三区高中清不卡| 中文字幕av免费专区久久| 男女男精品网站| 91丝袜高跟美女视频| 国产欧美日韩麻豆91| 裸体健美xxxx欧美裸体表演| caoporn国产一区二区| 国产日韩欧美高清| 免费成人在线影院| 欧美军同video69gay| 亚洲精品国久久99热| 风间由美中文字幕在线看视频国产欧美| 欧美区在线观看| 一区二区三区中文字幕在线观看| 国产成人一级电影| 国产亚洲欧美色| 国产一区二区三区久久久| 日韩免费在线观看| 日韩精品1区2区3区| 欧美日韩一级片在线观看| 怡红院av一区二区三区| 99riav久久精品riav| 国产精品久久久久影院色老大| 国产精品91xxx| 国产香蕉久久精品综合网| 激情文学综合插| 欧美精品一区二区三区在线播放| 美日韩黄色大片| 日韩一区二区高清| 捆绑调教美女网站视频一区| 日韩午夜电影av| 久久91精品国产91久久小草| 日韩一区二区中文字幕| 久久精品国产色蜜蜜麻豆| 日韩久久久久久| 国产麻豆成人精品| 欧美激情一区不卡| jlzzjlzz亚洲日本少妇| 亚洲黄色在线视频| 欧美日韩国产123区| 日本aⅴ免费视频一区二区三区| 欧美一区二区播放| 国产精品一区二区男女羞羞无遮挡| 久久综合九色综合欧美就去吻| 国产福利91精品| 亚洲日本欧美天堂| 欧美精品 日韩| 九九国产精品视频| 国产精品美女久久久久久久久| 色偷偷久久人人79超碰人人澡| 亚洲人成网站在线| 欧美一区二区三区成人| 国产精品888| 有坂深雪av一区二区精品| 日韩一区二区不卡| 成人爱爱电影网址| 五月激情综合网| 欧美精品一区二区三区蜜臀| 99久久99久久综合| 全国精品久久少妇| 中国av一区二区三区| 欧美人伦禁忌dvd放荡欲情| 国精产品一区一区三区mba视频| 欧美国产日韩a欧美在线观看| 在线观看免费视频综合| 激情欧美一区二区| 一区二区欧美在线观看| 欧美变态口味重另类| 91丝袜美腿高跟国产极品老师| 久久精品国产99| 一区二区三区国产| 国产色综合一区| 欧美男生操女生| 91亚洲精品久久久蜜桃网站| 久久99国产精品麻豆| 亚洲免费观看高清完整版在线观看 | 国产精品1024久久| 亚洲午夜成aⅴ人片| 久久久久国产成人精品亚洲午夜 | 欧美mv日韩mv国产网站| 91久久精品一区二区二区| 国产在线精品一区二区不卡了| 亚洲激情中文1区| 中文一区在线播放| 精品国产伦一区二区三区观看方式 | 国产成人精品免费看| 日韩专区欧美专区| 亚洲精品免费视频| 国产欧美精品一区二区三区四区| 777奇米四色成人影色区| 色综合咪咪久久| 国产91丝袜在线播放| 久久不见久久见中文字幕免费| 亚洲综合区在线| 国产精品国产三级国产有无不卡| 久久夜色精品一区| 日韩免费成人网| 日韩一区二区三区观看| 欧美日韩国产在线观看| 色综合久久中文字幕| www.av亚洲| 99久久免费视频.com| 成人免费看的视频| 国产91露脸合集magnet| 国产伦精一区二区三区| 免费成人av在线| 奇米在线7777在线精品| 青青草精品视频| 日韩激情一区二区| 麻豆精品一区二区av白丝在线| 日日骚欧美日韩| 日韩 欧美一区二区三区| 手机精品视频在线观看| 亚洲18女电影在线观看| 亚洲高清不卡在线观看| 亚洲国产精品久久久久婷婷884| 亚洲日本va在线观看| √…a在线天堂一区| 亚洲色图都市小说| 亚洲国产视频网站| 日韩va亚洲va欧美va久久| 男女男精品视频| 国产盗摄一区二区| 97精品国产97久久久久久久久久久久| thepron国产精品| 欧美在线免费播放| 91精品国产综合久久久久久久| 精品国产免费人成电影在线观看四季| 国产精品动漫网站| 一区二区三区四区精品在线视频| 一区二区三区免费网站| 日韩中文字幕一区二区三区| 美女被吸乳得到大胸91| 国产精品456| 在线免费观看成人短视频| 欧美精品一级二级| 欧美精品一区二区三区四区| 国产精品久久久久久一区二区三区| 亚洲另类一区二区| 蜜桃久久久久久| www.亚洲色图.com| 91麻豆精品国产91久久久久久 | 丝袜亚洲另类欧美| 美女脱光内衣内裤视频久久网站 | 国产电影精品久久禁18| 在线一区二区视频| 精品成人免费观看| 亚洲色大成网站www久久九九| 天堂av在线一区| 99在线精品观看| 精品国偷自产国产一区| 亚洲免费大片在线观看| 久久精品久久综合| 色婷婷久久久综合中文字幕| 欧美一区二区美女| 亚洲欧美偷拍卡通变态| 美女视频黄久久| 欧美色男人天堂| 国产日产欧美一区二区三区| 日本在线不卡视频| 91精品91久久久中77777| 精品福利av导航| 亚洲午夜国产一区99re久久| 国产福利一区在线| 日韩免费高清视频| 午夜影院久久久| 色中色一区二区| 国产亚洲va综合人人澡精品| 午夜不卡av在线| 91免费视频大全| 亚洲国产高清在线观看视频| 美女mm1313爽爽久久久蜜臀| 欧美影片第一页| 亚洲特级片在线| 成人av影院在线| 国产欧美日韩在线观看| 经典三级在线一区| 日韩欧美国产高清| 日本成人在线不卡视频| 欧美色精品天天在线观看视频| 中文字幕亚洲精品在线观看| 国产传媒久久文化传媒| 2021久久国产精品不只是精品| 日韩在线一区二区三区| 欧美日本一区二区三区四区| 亚洲自拍偷拍网站| 欧美午夜不卡在线观看免费| 亚洲视频在线一区二区| caoporm超碰国产精品| 国产精品久久久久久久久搜平片| 国产精品456| 欧美激情综合在线| 成人免费看视频| 亚洲人成在线观看一区二区| 91麻豆精品视频| 亚洲最新在线观看| 欧美在线免费视屏| 视频一区二区中文字幕|