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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? os_core.c

?? Small RTOS 移植到AVR下用IAR編譯的
?? C
字號:
/*********************************************************************************************************
**                                        Small RTOS
**                                   The Real-Time Kernel
**                           (c) Copyright 2002-2003, chenmingji
**                                     All Rights Reserved
**                                         V1.50.0
**
**--------------文件信息--------------------------------------------------------------------------------
**文   件   名: OS_CORE.C
**創(chuàng)   建   人: 陳明計
**最后修改日期: 2005年6月10日
**描        述: Small RTOS與CPU無關(guān)的核心代碼
**
**--------------歷史版本信息----------------------------------------------------------------------------
** 創(chuàng)建人: 陳明計
** 版  本: V1.00
** 日 期: 2005年6月10日
** 描 述: 基本完成全新的Small RTOS核
**
**------------------------------------------------------------------------------------------------------
** 修改人:
** 版  本:
** 日 期:
** 描 述:
**
**--------------當(dāng)前版本修訂------------------------------------------------------------------------------
** 修改人:
** 日 期:
** 描 述:
**
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/

#define  IN_OS_CORE
#define  IN_OS
#include "includes.h"

OS_TCB_PRIO         OSTCBPrioTbl[OS_LOWEST_PRIO + 1];  	/* 優(yōu)先級控制塊             */
OS_TCB              OSTCBTbl[OS_MAX_TASKS + 1];         /* 任務(wù)控制塊               */

OS_TCB              *OSTCBCur;                          /* 當(dāng)前任務(wù)控制塊           */
OS_TCB              *OSTCBHighRdy;                      /* 新任務(wù)控制塊             */
uint8               OSHighPrio;                         /* 就緒的任務(wù)的最高優(yōu)先級   */

uint8               OSIntNesting;                       /* 中斷嵌套層次             */
uint8               OsEnterSum;                         /* 關(guān)中斷嵌套層次           */

#if OS_TASK_STAT_EN > 0
					int8    	OSCPUUsage;          	/* 供調(diào)使用 統(tǒng)計CPU使用率	*/
__flash	const   	fp32		OSIdleCtrMax=32500;
		volatile	fp32		OSIdleCtr;				
#endif

__flash	const 	uint8 	OSMapTbl[] = {0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x00};

/*********************************************************************************************************
** 函數(shù)名稱: OSVersion
** 功能描述: 獲取Small RTOS 版本號
** 輸 入: 無
** 輸 出: 版本號*100
** 作 者: 陳明計
** 日 期:  2005年6月10日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
uint16 OSVersion(void)
{
    return OS_VERSION;
}

/*********************************************************************************************************
** 函數(shù)名稱: OSInit
** 功能描述: 系統(tǒng)初始化
** 輸 入: 無
** 輸 出: OS_NO_ERR
** 作 者: 陳明計
** 日 期:  2005年6月10日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
uint8 OSInit(void)
{
    uint8 i1;
    uint32 i2;
    OS_TCB_PRIO *tcbp;
    OS_TCB *tcb;

    /* 初始化優(yōu)先級控制塊 */
    tcbp = OSTCBPrioTbl;
    for (i1 = 0; i1 < OS_LOWEST_PRIO; i1++)
    {
        tcbp->OSTCBDly = 0;
        tcbp->OSTCBDlyReload = 10;
        tcbp->TcbNext= NULL;
        tcbp++;
    }
    tcbp->OSTCBDly = 0;
    tcbp->OSTCBDlyReload = 0;
    tcbp->TcbNext = OSTCBTbl + OS_MAX_TASKS;     /* 空閑任務(wù) */

    /* 初始化任務(wù)控制塊 */
    tcb = &(OSTCBTbl[0]);
    for (i2 = 0; i2 < OS_MAX_TASKS; i2++)
    {
        tcb->OSTCBStat = OS_STAT_DEATH;
        tcb->OSTCBInfo = OS_INFO_MSG_SENGED;
        tcb->OSTCBDly = 0;
        tcb->OSTCBId = i2;
        tcb->TcbNext = NULL;
#if OS_MAX_EVENTS > 0
        tcb->EventNext = NULL;
        tcb->EventPrev = NULL;
#endif
#if EN_OS_MSG > 0
        tcb->Msg = NULL;
        tcb->MsgHard = NULL;
        tcb->MsgEnd = NULL;
        tcb->MsgNext = NULL;
#endif
        tcb++;
    }

    /* 初始化空閑任務(wù) */
    tcb->OSTCBStat = 0;
    tcb->OSTCBInfo = OS_INFO_MSG_SENGED;
    tcb->OSTCBPrio = OS_LOWEST_PRIO;
    tcb->OSTCBDly = 0;
    tcb->OSTCBId = OS_MAX_TASKS;
    tcb->TcbNext = tcb;
    tcb->TcbPrev = tcb;
#if OS_MAX_EVENTS > 0
    tcb->EventNext = NULL;
    tcb->EventPrev = NULL;
#endif
#if EN_OS_MSG > 0
    tcb->Msg = NULL;
    tcb->MsgHard = NULL;
    tcb->MsgEnd = NULL;
    tcb->MsgNext = NULL;
#endif


    /* 初始化其它變量 */
    OSTCBCur = tcb;					/* 任務(wù)控制塊(TCB)控制空閑任務(wù) */
    OSTCBHighRdy = tcb;
    OsEnterSum = 0;
    OSIntNesting = 0;
    OSTickCnt = 0;
    OSTickThisCnt = 0;
    OSHighPrio = OS_LOWEST_PRIO;
    OSTCBTimeDly = NULL;

    OSEventinit();                  /* 事件控制初始化代碼    */
    return OS_NO_ERR;
}

/*********************************************************************************************************
** 函數(shù)名稱: OSSetRoundTick
** 功能描述: 設(shè)置指定優(yōu)先級的任務(wù)的輪詢時間
** 輸 入: Prio:要設(shè)置的優(yōu)先級
**         Ticks:輪詢時間
** 輸 出: OS_NO_ERR
** 作 者: 陳明計
** 日 期: 2005年6月10日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**-------------------------------------------------------------------------------------------------------
********************************************************************************************************/
uint8 OSSetRoundTick(uint8 Prio, uint16 Ticks)
{
   	OS_CPU_SR cpu_sr = 0;
	
	OS_ENTER_CRITICAL();
    if (Prio < OS_LOWEST_PRIO)                      /* 優(yōu)先級存在               */
    {
        OSTCBPrioTbl[Prio].OSTCBDlyReload = Ticks;  /* 設(shè)置輪詢時間             */
        OSTCBPrioTbl[Prio].OSTCBDly = Ticks;        /* 設(shè)置當(dāng)次輪詢時間         */
        if (OSTCBCur->OSTCBPrio == Prio)            /* 如果是當(dāng)前任務(wù)           */
        if (OSTickCnt == 0)                         /* 沒有任務(wù)需要時間服務(wù)延時 */
        {
                                                    /* 啟動時間服務(wù)             */
            OSTickCnt = Ticks;
            OSTickThisCnt = Ticks;
        }
    }
    OS_EXIT_CRITICAL();
    return OS_NO_ERR;
}

/*********************************************************************************************************
** 函數(shù)名稱: OSFindNextRunningTask
** 功能描述: 查找下一個優(yōu)先級最高的就緒任務(wù)
** 輸 入: 無
** 輸 出: OS_NO_ERR
** 作 者: 陳明計
** 日 期: 2005年6月10日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**-------------------------------------------------------------------------------------------------------
********************************************************************************************************/
uint8 OSFindNextRunningTask(void)
{
    OS_TCB_PRIO *tcbp;
    uint8 temp;

    temp = OSHighPrio;                      /* 從優(yōu)先級OSHighPrio處開始查找 */
    tcbp = &(OSTCBPrioTbl[temp]);
    while (1)
    {
        if (tcbp->TcbNext != NULL)          /* 相應(yīng)的優(yōu)先級有任務(wù)就緒       */
        {
            OSTCBHighRdy = tcbp->TcbNext;   /* 獲取將要運(yùn)行的任務(wù)的TCB      */
            OSHighPrio = temp;              /* 設(shè)置下次查找起始點           */
            if (OSTickCnt == 0)             /* 沒有任務(wù)需要時間服務(wù)延時     */
            if (tcbp->OSTCBDly != 0)        /* 新優(yōu)先級需要輪詢服務(wù)         */
            {

                                            /* 啟動時間服務(wù)                 */
                OSTickCnt = tcbp->OSTCBDly;
                OSTickThisCnt = OSTickCnt;
            }
            break;
        }
        tcbp++;
        temp++;
    }
    return OS_NO_ERR;
}

/*********************************************************************************************************
** 函數(shù)名稱: OSIntEnter
** 功能描述: 進(jìn)入中斷處理函數(shù)
** 輸 入: 無
** 輸 出: 無
** 作 者: 陳明計
** 日 期: 2005年6月10日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void  OSIntEnter (void)
{
	OSIntNesting++;                	/* 中斷嵌套加一 */
	_SEI();							/* 允許AVR中斷嵌套 */
}

/*********************************************************************************************************
** 函數(shù)名稱: OSIntExit
** 功能描述: 中斷退出處理函數(shù),在此進(jìn)行中斷后的任務(wù)切換
** 輸 入: 無
** 輸 出: TRUE:需要進(jìn)行任務(wù)切換
**         FALSE:不需要進(jìn)行任務(wù)切換
** 作 者: 陳明計
** 日 期: 2005年6月10日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
uint8 OSIntExit(void)
{
    OS_CPU_SR cpu_sr = 0;
	
	OS_ENTER_CRITICAL();
    OsEnterSum = 0;              	/* 因為在中斷中,所以關(guān)中斷計數(shù)器為0 */
	/* 中斷嵌套處理 */
    if (OSIntNesting > 0)
    {
        OSIntNesting--;
    }
    if (OSIntNesting == 0)
    {
        OSFindNextRunningTask();
        if (OSTCBCur != OSTCBHighRdy)
        {
			OSIntCtxSw();
			OS_EXIT_CRITICAL();
            return 1;
        }
    }
	OS_EXIT_CRITICAL();
    return 0;
}

/*********************************************************************************************************
** 函數(shù)名稱: OSSched
** 功能描述: 非中斷的任務(wù)切換函數(shù)
** 輸 入: 無
** 輸 出: OS_NO_ERR
** 作 者: 陳明計
** 日 期: 2005年6月10日
**------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**-------------------------------------------------------------------------------------------------------
********************************************************************************************************/
uint8  OSSched(void)
{
    if (OSIntNesting == 0)              /* 是否是中斷中調(diào)用 */
    {
        OSFindNextRunningTask();
        if (OSTCBCur != OSTCBHighRdy)
        {
			OS_TASK_SW();
        }
    }
    return OS_NO_ERR;
}

/*********************************************************************************************************
** 函數(shù)名稱: OSCPUStat
** 功能描述: 計算CPU的使用率
** 輸 入: 無
** 輸 出: 無
** 作 者: 劉永奎
** 日 期: 2008年3月6日
**------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**-------------------------------------------------------------------------------------------------------
********************************************************************************************************/
#if OS_TASK_STAT_EN > 0

void OSCPUStat(void)
{
	if(OSIdleCtr==0)
	{
		OSCPUUsage=0;
		OSIdleCtr=0;
		return;
	}
	else if(OSIdleCtr>=OSIdleCtrMax)
	{
		OSCPUUsage=100;
		OSIdleCtr=0;
		return;
	}
	else
	{
  	OSCPUUsage=100-(int8)( (OSIdleCtr/OSIdleCtrMax)*100+0.5 );
	OSIdleCtr=0;
	}
	
}

#endif


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

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲欧美日韩中文播放| 欧美日韩中字一区| 亚洲网友自拍偷拍| 日韩视频免费观看高清完整版 | 在线观看视频91| 亚洲成人动漫一区| 中文字幕精品一区二区三区精品| 欧美日韩精品三区| 99re成人精品视频| 韩国精品主播一区二区在线观看 | 中文字幕日韩欧美一区二区三区| 欧美日韩精品二区第二页| 丁香六月综合激情| 日本成人在线不卡视频| 亚洲欧美一区二区不卡| 26uuu久久天堂性欧美| 欧美精品一卡两卡| 日本乱人伦aⅴ精品| 不卡欧美aaaaa| 国产美女娇喘av呻吟久久| 天天影视涩香欲综合网 | 国产精品综合av一区二区国产馆| 亚洲午夜私人影院| 亚洲免费在线电影| 国产日韩v精品一区二区| 精品福利一区二区三区免费视频| 欧美偷拍一区二区| 日本丶国产丶欧美色综合| 夫妻av一区二区| 国产一区二区免费视频| 乱一区二区av| 极品少妇xxxx精品少妇| 麻豆成人在线观看| 日韩高清一区在线| 天天综合天天做天天综合| 亚洲成人资源网| 9色porny自拍视频一区二区| 国产真实乱子伦精品视频| 久久99久久99| 国产最新精品免费| 国产在线国偷精品产拍免费yy| 精品无人码麻豆乱码1区2区| 六月丁香综合在线视频| 精品一区二区三区在线播放视频 | 免费观看成人鲁鲁鲁鲁鲁视频| 亚洲国产综合人成综合网站| 亚洲午夜精品久久久久久久久| 一区二区三区成人| 亚洲成人一区二区| 婷婷六月综合网| 日韩av中文字幕一区二区三区| 日本特黄久久久高潮| 蜜臀国产一区二区三区在线播放| 免费在线观看一区| 国产一区不卡视频| 成人一区二区三区视频在线观看| 99热精品国产| 欧美天天综合网| 91精品婷婷国产综合久久| 精品免费99久久| 欧美激情在线一区二区| 亚洲精品乱码久久久久久久久 | 一区二区三区.www| 日韩在线卡一卡二| 国产一区二区福利| 色综合久久99| 欧美一区二区三区四区五区 | 日韩欧美中文字幕公布| 2023国产精品| 日韩理论电影院| 首页亚洲欧美制服丝腿| 国产乱码精品一区二区三区五月婷| 国产成人亚洲综合a∨婷婷图片| 色久综合一二码| 日韩一级免费观看| 国产精品色呦呦| 亚洲aaa精品| 国产在线精品免费| 欧美亚洲自拍偷拍| 精品捆绑美女sm三区| 亚洲天天做日日做天天谢日日欢 | 日韩国产欧美在线播放| 国产综合久久久久久鬼色 | 欧美一区二区视频免费观看| 中文文精品字幕一区二区| 亚洲一区二区三区四区在线免费观看| 蜜桃精品在线观看| 91在线国产观看| 日韩欧美一级片| 亚洲免费在线观看| 国产在线观看一区二区| 欧美午夜宅男影院| 首页国产欧美久久| 国产aⅴ综合色| 欧美精品一二三四| 亚洲欧洲在线观看av| 日韩成人精品在线观看| 91小视频在线观看| 久久综合狠狠综合| 偷拍亚洲欧洲综合| 91在线播放网址| 久久无码av三级| 青青草97国产精品免费观看无弹窗版| 丰满白嫩尤物一区二区| 欧美一区二区三区免费观看视频| 樱花影视一区二区| 成人aaaa免费全部观看| 久久综合999| 日本不卡一二三区黄网| 色94色欧美sute亚洲线路一ni | 国产精品久久久久久妇女6080 | 99精品国产一区二区三区不卡| 日韩欧美的一区二区| 亚洲成人综合视频| 91久久线看在观草草青青| 中文av字幕一区| 国产自产v一区二区三区c| 欧美一二区视频| 亚洲va韩国va欧美va精品| 91蜜桃传媒精品久久久一区二区| 久久精品视频免费观看| 韩国视频一区二区| 欧美大胆人体bbbb| 免费成人av在线| 在线综合视频播放| 日本欧美加勒比视频| 欧美吻胸吃奶大尺度电影| 亚洲在线成人精品| 日本道在线观看一区二区| 亚洲精品成人a在线观看| 91麻豆免费观看| 1024精品合集| 色综合天天综合狠狠| 亚洲视频在线一区观看| eeuss国产一区二区三区| 中文字幕精品—区二区四季| 国产精品一区二区在线观看不卡| 欧美va亚洲va| 极品少妇一区二区| 久久嫩草精品久久久精品一| 国产一区二区三区观看| 久久久亚洲精品石原莉奈| 国产自产v一区二区三区c| 国产夜色精品一区二区av| 高清国产一区二区| 中文字幕+乱码+中文字幕一区| 成人午夜在线视频| 亚洲欧洲av色图| 色婷婷久久久亚洲一区二区三区 | 不卡视频一二三四| 亚洲欧美日韩一区二区三区在线观看| 色综合中文综合网| 国产乱码精品一品二品| 欧美激情一区二区三区| 99视频热这里只有精品免费| 一级特黄大欧美久久久| 亚洲卡通欧美制服中文| 91精彩视频在线| 亚洲成av人片一区二区三区| 日韩一级黄色片| 国产**成人网毛片九色| 亚洲人成7777| 欧美日韩一区二区在线视频| 美洲天堂一区二卡三卡四卡视频| 精品福利一区二区三区免费视频| 成人app在线观看| 午夜精品视频一区| 久久久99精品免费观看不卡| 色婷婷久久综合| 久久国内精品自在自线400部| 国产精品美女久久久久久久久久久| 色综合中文字幕国产 | 欧美成人性战久久| 粉嫩av亚洲一区二区图片| 亚洲精品成人悠悠色影视| 制服丝袜亚洲网站| 国产精品66部| 亚洲一区二区三区精品在线| 精品免费视频一区二区| 色婷婷综合久久久久中文| 久久精品国产99国产| 国产精品白丝在线| 欧美一区日韩一区| eeuss鲁片一区二区三区| 视频一区二区中文字幕| 国产欧美日韩视频一区二区| 欧美视频在线观看一区| 国产91富婆露脸刺激对白| 亚洲国产你懂的| 国产精品色一区二区三区| 欧美日韩精品是欧美日韩精品| 粗大黑人巨茎大战欧美成人| 丝袜诱惑亚洲看片| 国产精品第一页第二页第三页| 日韩一区二区三区精品视频| 色先锋aa成人| 国产成人免费网站| 秋霞国产午夜精品免费视频| 亚洲男女毛片无遮挡| 中文天堂在线一区|