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

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

?? rm_task.bak

?? 這是一個修改ucos的操作系統
?? BAK
字號:
/*
*********************************************************************************************************
*                                                uC/OS-II
*                                          The Real-Time Kernel
*                                            RM_TASK MANAGEMENT
*
*                          (c) Copyright 2006, CHEN JUN, FU XIU XIA
*                                           All Rights Reserved
*
* File : RM_TASK.C
* By   : CHEN JUN
*********************************************************************************************************
*/


#ifndef  OS_MASTER_FILE
#include "includes.h"
#endif


/*
*********************************************************************************************************
*                                            CREATE A RMTASK
*
* Description: This function is used to have uC/OS-II manage the execution of a rmtask.  Tasks can either
*              be created prior to the start of multitasking or by a running task.  A task cannot be
*              created by an ISR.
*
* Arguments  : task     is a pointer to the task's code
*
*              pdata    is a pointer to an optional data area which can be used to pass parameters to
*                       the task when the task first executes.  Where the task is concerned it thinks
*                       it was invoked and passed the argument 'pdata' as follows:
*
*                           void Task (void *pdata)
*                           {
*                               for (;;) {
                                    PeriodSet();
*                                   Task code;
*                               }
*                           }
*
*              ptos     is a pointer to the task's top of stack.  If the configuration constant
*                       OS_STK_GROWTH is set to 1, the stack is assumed to grow downward (i.e. from high
*                       memory to low memory).  'pstk' will thus point to the highest (valid) memory
*                       location of the stack.  If OS_STK_GROWTH is set to 0, 'pstk' will point to the
*                       lowest memory location of the stack and the stack will grow with increasing
*                       memory locations.
*
*                       
* Returns    : RM_NO_ERR        if the function was successful.
*              RMTASK_FAILED     if the task priority already exist
*                               (each task MUST have a unique priority).
*
*********************************************************************************************************
*/
//#define rm_os_disable 0;
#if RM_TASK_EN > 0
INT8U  RMTaskCreate (void (*task)(void *pd),
							void *pdata,
							OS_STK *ptos,
							INT16U RMTASKStartTime,
							INT16U RMTASKInitTime,
							INT16U RMTASKPeriods,
							INT16U RMTASKInitPeriodsNum
						  )
{
#if OS_CRITICAL_METHOD == 3                  /* Allocate storage for CPU status register               */
    OS_CPU_SR  cpu_sr;
#endif
    OS_STK    *psp;
    INT8U      err;
    INT8U      rmerr;
    INT8U      RM_OS_FLAG = 1;
    INT8U      prio = 0;
    RM_TCB     *prmtcb = (RM_TCB *)0;
		 //	OSTCBPrioTbl[25] = (OS_TCB *)1 ;
        rmerr = RM_TCBInit(RMTASKStartTime, RMTASKInitTime, RMTASKPeriods, RMTASKInitPeriodsNum, prmtcb);
		  if (rmerr == RM_NO_ERR){
        psp = (OS_STK *)OSTaskStkInit(task, pdata, ptos, 0);    /* Initialize the task's stack         */       
        err = RMOS_TCBInit( psp, (OS_STK *)0, 0, 0, (void *)0, 0, RMTASKPeriods, prmtcb);
        if (err == OS_NO_ERR) {
            OS_ENTER_CRITICAL();
            OSTaskCtr++;                                        /* Increment the #tasks counter        */
				OS_EXIT_CRITICAL();
            if (OSRunning == TRUE) {         /* Find highest priority task if multitasking has started */
                OS_Sched();
                }              
				}
            return (err);
			}
			return (rmerr);
}
#endif


/*
*********************************************************************************************************
*                                            INITIALIZE TCB
*
* Description: This function is internal to uC/OS-II and is used to initialize a Task Control Block when
*              a task is created (see OSTaskCreate() and OSTaskCreateExt()).
*
* Arguments  : prio          is the priority of the task being created
*
*              ptos          is a pointer to the task's top-of-stack assuming that the CPU registers
*                            have been placed on the stack.  Note that the top-of-stack corresponds to a
*                            'high' memory location is OS_STK_GROWTH is set to 1 and a 'low' memory
*                            location if OS_STK_GROWTH is set to 0.  Note that stack growth is CPU
*                            specific.
*
*              pbos          is a pointer to the bottom of stack.  A NULL pointer is passed if called by
*                            'OSTaskCreate()'.
*
*              id            is the task's ID (0..65535)
*
*              stk_size      is the size of the stack (in 'stack units').  If the stack units are INT8Us
*                            then, 'stk_size' contains the number of bytes for the stack.  If the stack
*                            units are INT32Us then, the stack contains '4 * stk_size' bytes.  The stack
*                            units are established by the #define constant OS_STK which is CPU
*                            specific.  'stk_size' is 0 if called by 'OSTaskCreate()'.
*
*              pext          is a pointer to a user supplied memory area that is used to extend the task
*                            control block.  This allows you to store the contents of floating-point
*                            registers, MMU registers or anything else you could find useful during a
*                            context switch.  You can even assign a name to each task and store this name
*                            in this TCB extension.  A NULL pointer is passed if called by OSTaskCreate().
*
*              opt           options as passed to 'OSTaskCreateExt()' or,
*                            0 if called from 'OSTaskCreate()'.
*
* Returns    : OS_NO_ERR         if the call was successful
*              OS_NO_MORE_TCB    if there are no more free TCBs to be allocated and thus, the task cannot
*                                be created.
*
* Note       : This function is INTERNAL to uC/OS-II and your application should not call it.
*********************************************************************************************************
*/

#if RM_TASK_EN > 0
INT8U  RMOS_TCBInit (OS_STK *ptos, OS_STK *pbos, INT16U id, INT32U stk_size, void *pext, INT16U opt , INT16U RMTASKPeriods, RM_TCB *prmtcb)
{
#if OS_CRITICAL_METHOD == 3                                /* Allocate storage for CPU status register */
    OS_CPU_SR  cpu_sr;
#endif    
    OS_TCB    *ptcb;


    OS_ENTER_CRITICAL();
    ptcb = OSTCBFreeList;                                  /* Get a free TCB from the free TCB list    */
    if (ptcb != (OS_TCB *)0) {
        OSTCBFreeList        = ptcb->OSTCBNext;            /* Update pointer to free TCB list          */
        OS_EXIT_CRITICAL();
		  ptcb->OSTCBStkPtr    = ptos;                       /* Load Stack pointer in TCB                */
		  ptcb->OSTCBPrio      = 0;                /* Load task priority into TCB              */
        ptcb->OSTCBStat      = OS_STAT_RDY;                /* Task is ready to run                     */
        ptcb->OSTCBDly       = RMTASKPeriods;                          /* Task is not delayed                      */

#if OS_TASK_CREATE_EXT_EN > 0
        ptcb->OSTCBExtPtr    = pext;                       /* Store pointer to TCB extension           */
        ptcb->OSTCBStkSize   = stk_size;                   /* Store stack size                         */
		  ptcb->OSTCBStkBottom = pbos;                       /* Store pointer to bottom of stack         */
        ptcb->OSTCBOpt       = opt;                        /* Store task options                       */
        ptcb->OSTCBId        = id;                         /* Store task ID                            */
#else
        pext                 = pext;                       /* Prevent compiler warning if not used     */
        stk_size             = stk_size;
        pbos                 = pbos;
        opt                  = opt;
        id                   = id;
#endif

#if OS_TASK_DEL_EN > 0
        ptcb->OSTCBDelReq    = OS_NO_ERR;
#endif

		  ptcb->OSTCBY         = 0;                  /* Pre-compute X, Y, BitX and BitY          */
		  ptcb->OSTCBBitY      = 0;
		  ptcb->OSTCBX         = 0;
		  ptcb->OSTCBBitX      = 0;

#if OS_EVENT_EN > 0
        ptcb->OSTCBEventPtr  = (OS_EVENT *)0;              /* Task is not pending on an event          */
#endif

#if (OS_VERSION >= 251) && (OS_FLAG_EN > 0) && (OS_MAX_FLAGS > 0) && (OS_TASK_DEL_EN > 0)
        ptcb->OSTCBFlagNode  = (OS_FLAG_NODE *)0;          /* Task is not pending on an event flag     */
#endif

#if (OS_MBOX_EN > 0) || ((OS_Q_EN > 0) && (OS_MAX_QS > 0))
        ptcb->OSTCBMsg       = (void *)0;                  /* No message received                      */
#endif


#if OS_VERSION >= 204
        OSTCBInitHook(ptcb);
#endif

        OSTaskCreateHook(ptcb);                            /* Call user defined hook                   */
		  //按周期順序插入隊列中
		  OS_ENTER_CRITICAL();

		  ptcb->OSTCBNext    = RMOSTCBList;                    /* Link into TCB chain                      */
        ptcb->OSTCBPrev    = (OS_TCB *)0;
        if (RMOSTCBList != (OS_TCB *)0) {
            RMOSTCBList->OSTCBPrev = ptcb;
        }
        RMOSTCBList               = ptcb;   
		  ptcb->OS_TO_RMTCBPtr = prmtcb;
        OS_EXIT_CRITICAL();



     
		  return (OS_NO_ERR);
    }
	 OS_EXIT_CRITICAL();
    return (OS_NO_MORE_TCB);
}
#endif


/*
*********************************************************************************************************
*                                            INITIALIZE RMTCB
*
* Description: This function is used to have uC/OS-II manage the execution of a rmtask.  Tasks can either
*              be created prior to the start of multitasking or by a running task.  A task cannot be
*              created by an ISR.
*
* 
*********************************************************************************************************
*/
#if RM_TASK_EN > 0
INT8U  RM_TCBInit (  INT16U RMTASKStartTime,
							INT16U RMTASKInitTime,
							INT16U RMTASKPeriods,
							INT16U RMTASKInitPeriodsNum,
							RM_TCB *prmtcb
							)
{
#if OS_CRITICAL_METHOD == 3                                /* Allocate storage for CPU status register */
	 OS_CPU_SR  cpu_sr;
#endif
	 RM_TCB    *ptcb;

	 OS_ENTER_CRITICAL();
	 ptcb = RMTCBFreeList;                                  /* Get a free TCB from the free TCB list    */
	 if (ptcb != (RM_TCB *)0) {
		  RMTCBFreeList        = ptcb->RMTCBNext;            /* Update pointer to free TCB list          */
		  OS_EXIT_CRITICAL();

		  ptcb->RMTCBStartTime = RMTASKStartTime; //第一次開始執行時間
		  ptcb->RMTCBInitTime  = RMTASKInitTime; //初始執行時間
		  ptcb->RMTCBRemainTime = RMTASKInitTime;

		  ptcb->RMTCBPeriods   = RMTASKPeriods;     /*任務周期*/
		  ptcb->RMTCBInitPeriodsNum = RMTASKInitPeriodsNum;     //初始化周期數
		  ptcb->RMTCBRemainPeriodsNum = RMTASKInitPeriodsNum;

			prmtcb = ptcb;
			OS_EXIT_CRITICAL();
		  return (RM_NO_ERR);
	 }
	 OS_EXIT_CRITICAL();
	 return (RM_NO_MORE_TCB);
}

#endif

void prio()
{

		  OS_TCB    *ptcb;

		  INT8U prio;

			 ptcb = RMOSTCBList;
			 OSTCBPrioTbl[25] = ptcb;
			 prio = 25;
			 OS_ENTER_CRITICAL();
		  ptcb->OSTCBY         = prio >> 3;
		  ptcb->OSTCBBitY      = OSMapTbl[ptcb->OSTCBY];
		  ptcb->OSTCBX         = prio & 0x07;
		  ptcb->OSTCBBitX      = OSMapTbl[ptcb->OSTCBX];
			ptcb->OSTCBPrio     = prio;
			OSRdyGrp               |= ptcb->OSTCBBitY;         /* Make task ready to run                   */
		 OSRdyTbl[ptcb->OSTCBY] |= ptcb->OSTCBBitX;
		 OS_EXIT_CRITICAL();

}



?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久亚洲免费视频| 亚洲乱码国产乱码精品精的特点| 国产拍揄自揄精品视频麻豆| 亚洲一区在线电影| 国产一区二三区好的| 欧美日韩国产综合一区二区三区| 欧美国产一区视频在线观看| 久色婷婷小香蕉久久| 欧美艳星brazzers| 国产精品久久福利| 国产一区在线看| 制服丝袜中文字幕一区| 亚洲精品美腿丝袜| 成人美女视频在线观看| 337p粉嫩大胆色噜噜噜噜亚洲| 亚洲国产精品影院| 91亚洲精华国产精华精华液| 国产网站一区二区| 久久99精品久久久| 日韩欧美卡一卡二| 亚洲不卡一区二区三区| 日本精品视频一区二区三区| 国产精品色眯眯| 国产精品456| 久久久天堂av| 国产美女在线精品| 精品国产一区二区国模嫣然| 看片网站欧美日韩| 日韩视频一区二区在线观看| 免费在线观看日韩欧美| 欧美日韩国产高清一区二区| 亚洲韩国一区二区三区| 欧美无砖砖区免费| 亚洲国产一区在线观看| 欧美妇女性影城| 婷婷丁香久久五月婷婷| 欧美精品在线观看一区二区| 亚洲成人精品影院| 欧美一区日韩一区| 黄页视频在线91| 久久久亚洲精品石原莉奈| 国产乱国产乱300精品| 国产欧美精品一区| 99久久精品免费| 一区二区三区欧美日韩| 欧美日韩一区二区三区视频| 亚洲一区二区三区视频在线| 欧美久久久久久久久| 久久99精品视频| 久久久久久久久久久黄色| 成人动漫中文字幕| 一区二区三区视频在线看| 欧美亚洲综合网| 蜜臀久久久99精品久久久久久| 精品久久久久久久久久久久久久久久久 | 欧美成人video| 国产精品亚洲人在线观看| 国产精品白丝在线| 色哟哟精品一区| 日本不卡视频一二三区| 国产目拍亚洲精品99久久精品 | 久久69国产一区二区蜜臀| 国产日韩欧美一区二区三区综合| 91丨九色porny丨蝌蚪| 亚洲一区二区偷拍精品| 久久你懂得1024| 欧美性大战久久| 国产中文字幕一区| 亚洲欧美一区二区久久| 91精品国产免费| 91在线码无精品| 婷婷成人综合网| 亚洲欧美怡红院| 日韩小视频在线观看专区| 国产风韵犹存在线视精品| 亚洲女女做受ⅹxx高潮| 日韩色视频在线观看| 色哟哟欧美精品| 国产黄色精品视频| 天天综合色天天综合| 国产精品乱码久久久久久| 6080午夜不卡| 北岛玲一区二区三区四区| 日本vs亚洲vs韩国一区三区| 国产精品久久久久久亚洲毛片| 欧美精品自拍偷拍动漫精品| 91香蕉国产在线观看软件| 国产一区二区导航在线播放| 亚洲一卡二卡三卡四卡五卡| 中文字幕在线观看不卡| 久久久五月婷婷| 精品国产一区久久| 欧美巨大另类极品videosbest | 欧美巨大另类极品videosbest | 国产91丝袜在线播放九色| 欧美a级理论片| 一区二区三区欧美亚洲| 最新成人av在线| 国产精品丝袜在线| 久久亚洲一区二区三区四区| 日韩一级片网站| 91麻豆精品国产91久久久使用方法 | 亚洲视频狠狠干| 国产精品丝袜久久久久久app| 日韩免费视频一区二区| 欧美高清精品3d| 欧美一级高清大全免费观看| 欧美精品日日鲁夜夜添| 欧美另类变人与禽xxxxx| 欧美日韩中文另类| 91黄色小视频| 91高清在线观看| 欧美日韩国产综合视频在线观看 | 91视频免费播放| 99久久精品一区| 在线亚洲+欧美+日本专区| 91女人视频在线观看| 91在线你懂得| 欧洲激情一区二区| 欧美亚州韩日在线看免费版国语版| 91看片淫黄大片一级| 94-欧美-setu| 欧美亚洲国产一区在线观看网站| 欧美伊人久久大香线蕉综合69| 欧美日韩免费一区二区三区视频| 欧美视频自拍偷拍| 欧美日韩一区二区在线观看| 欧美一区永久视频免费观看| 精品久久久久久久一区二区蜜臀| 久久品道一品道久久精品| 亚洲国产精品精华液2区45| 中文字幕av一区二区三区| 亚洲人吸女人奶水| 亚洲国产wwwccc36天堂| 人人超碰91尤物精品国产| 国产尤物一区二区| 成人免费视频一区| 欧美日韩中字一区| 精品国产一区二区国模嫣然| 亚洲国产精品二十页| 一区二区三区日韩欧美| 免费在线观看视频一区| 成人免费av网站| 欧美三级韩国三级日本一级| 久久综合色8888| 亚洲欧美一区二区三区国产精品| 日韩一区精品视频| 国产美女在线观看一区| 色八戒一区二区三区| 欧美一级理论片| 国产精品国产精品国产专区不片| 亚洲午夜久久久久久久久久久| 极品少妇xxxx精品少妇偷拍| 一本大道久久精品懂色aⅴ| 日韩欧美你懂的| 亚洲乱码中文字幕| 麻豆视频一区二区| 99re热这里只有精品免费视频| 制服丝袜亚洲色图| 国产精品成人网| 美日韩黄色大片| 在线一区二区观看| 精品国产免费一区二区三区四区 | 欧美日韩在线免费视频| 久久久影院官网| 日韩电影在线免费| 成人av电影在线| 久久综合精品国产一区二区三区 | 亚洲一区二区三区不卡国产欧美| 国产精品影视在线| 欧美男人的天堂一二区| 国产精品伦理在线| 国产在线一区观看| 欧美日韩一卡二卡三卡| 亚洲天堂a在线| 久久精品久久综合| 欧美少妇一区二区| 一区二区三区四区高清精品免费观看 | 六月丁香婷婷久久| 欧美精品亚洲二区| 亚洲一卡二卡三卡四卡无卡久久| 成人性生交大合| 26uuu亚洲| 精品中文字幕一区二区| 777午夜精品视频在线播放| 一级特黄大欧美久久久| 99久久国产综合色|国产精品| 欧美激情中文不卡| 久久国产尿小便嘘嘘尿| 欧美日韩亚洲高清一区二区| 一区二区在线免费| 91久久精品网| 一区二区三区精品在线| 91麻豆国产精品久久| 中文字幕佐山爱一区二区免费| 成人影视亚洲图片在线| 国产无人区一区二区三区| 国产一区二区电影| 国产欧美一区二区三区在线看蜜臀 | 中文字幕在线观看一区二区|