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

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

?? os_core.lst

?? 在C8051F120內移植uCOS-II
?? LST
?? 第 1 頁 / 共 4 頁
字號:
 219          *
 220          * Returns    : none
 221          *********************************************************************************************************
 222          */
 223          
 224          void OSInit (void)
 225          {
 226   1          INT16U i;
 227   1      
 228   1      
 229   1          OSTime        = 0L;                                    /* Clear the 32-bit system clock            */
 230   1          OSIntNesting  = 0;                                     /* Clear the interrupt nesting counter      */
 231   1          OSLockNesting = 0;                                     /* Clear the scheduling lock counter        */
 232   1      #if OS_TASK_CREATE_EN  || OS_TASK_CREATE_EXT_EN || OS_TASK_DEL_EN
 233   1          OSTaskCtr     = 0;                                     /* Clear the number of tasks                */
 234   1      #endif
 235   1          OSRunning     = FALSE;                                 /* Indicate that multitasking not started   */
 236   1          OSIdleCtr     = 0L;                                    /* Clear the 32-bit idle counter            */
C51 COMPILER V8.08   OS_CORE                                                               04/13/2009 13:31:21 PAGE 5   

 237   1      #if OS_TASK_STAT_EN && OS_TASK_CREATE_EXT_EN
                  OSIdleCtrRun  = 0L;
                  OSIdleCtrMax  = 0L;
                  OSStatRdy     = FALSE;                                 /* Statistic task is not ready              */
              #endif
 242   1          OSCtxSwCtr    = 0;                                     /* Clear the context switch counter         */
 243   1          OSRdyGrp      = 0;                                     /* Clear the ready list                     */
 244   1          for (i = 0; i < OS_RDY_TBL_SIZE; i++) {
 245   2              OSRdyTbl[i] = 0;
 246   2          }
 247   1                      
 248   1          OSPrioCur     = 0;
 249   1          OSPrioHighRdy = 0;                                           
 250   1          OSTCBHighRdy  = (OS_TCB *)0;                                 /* TCB Initialization                 */
 251   1          OSTCBCur      = (OS_TCB *)0;
 252   1          OSTCBList     = (OS_TCB *)0;
 253   1          for (i = 0; i < (OS_LOWEST_PRIO + 1); i++) {                 /* Clear the priority table           */
 254   2              OSTCBPrioTbl[i] = (OS_TCB *)0;
 255   2          }
 256   1          for (i = 0; i < (OS_MAX_TASKS + OS_N_SYS_TASKS - 1); i++) {  /* Init. list of free TCBs            */
 257   2              OSTCBTbl[i].OSTCBNext = &OSTCBTbl[i + 1];
 258   2          }
 259   1          OSTCBTbl[OS_MAX_TASKS + OS_N_SYS_TASKS - 1].OSTCBNext = (OS_TCB *)0;    /* Last OS_TCB             */
 260   1          OSTCBFreeList                                         = &OSTCBTbl[0];
 261   1      
 262   1      #if OS_MAX_EVENTS >= 2
 263   1          for (i = 0; i < (OS_MAX_EVENTS - 1); i++) {            /* Init. list of free EVENT control blocks  */
 264   2              OSEventTbl[i].OSEventPtr = (OS_EVENT *)&OSEventTbl[i + 1];
 265   2          }
 266   1          OSEventTbl[OS_MAX_EVENTS - 1].OSEventPtr = (OS_EVENT *)0;
 267   1          OSEventFreeList                          = &OSEventTbl[0];    
 268   1      #endif
 269   1      
 270   1      #if OS_Q_EN && (OS_MAX_QS >= 2)
                  OSQInit();                                             /* Initialize the message queue structures  */
              #endif
 273   1      
 274   1      #if OS_MEM_EN && OS_MAX_MEM_PART >= 2
                  OSMemInit();                                           /* Initialize the memory manager            */
              #endif    
 277   1      
 278   1      #if OS_STK_GROWTH == 1
 279   1          #if OS_TASK_CREATE_EXT_EN
 280   1          OSTaskCreateExt(OSTaskIdle, 
 281   1                          (void *)0,                                 /* No arguments passed to OSTaskIdle()  */
 282   1                          &OSTaskIdleStk[OS_TASK_IDLE_STK_SIZE - 1], /* Set Top-Of-Stack                     */
 283   1                          OS_IDLE_PRIO,                              /* Lowest priority level                */
 284   1                          OS_TASK_IDLE_ID,
 285   1                          &OSTaskIdleStk[0],                         /* Set Bottom-Of-Stack                  */
 286   1                          OS_TASK_IDLE_STK_SIZE, 
 287   1                          (void *)0,                                 /* No TCB extension                     */
 288   1                          OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);/* Enable stack checking + clear stack  */
 289   1          #else
                  OSTaskCreate(OSTaskIdle, (void *)0, &OSTaskIdleStk[OS_TASK_IDLE_STK_SIZE - 1], OS_IDLE_PRIO);
                  #endif
 292   1      #else
                  #if OS_TASK_CREATE_EXT_EN
                  OSTaskCreateExt(OSTaskIdle, 
                                  (void *)0,                                 /* No arguments passed to OSTaskIdle()  */
                                  &OSTaskIdleStk[0],                         /* Set Top-Of-Stack                     */
                                  OS_IDLE_PRIO,                              /* Lowest priority level                */
                                  OS_TASK_IDLE_ID,
C51 COMPILER V8.08   OS_CORE                                                               04/13/2009 13:31:21 PAGE 6   

                                  &OSTaskIdleStk[OS_TASK_IDLE_STK_SIZE - 1], /* Set Bottom-Of-Stack                  */
                                  OS_TASK_IDLE_STK_SIZE, 
                                  (void *)0,                                 /* No TCB extension                     */
                                  OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);/* Enable stack checking + clear stack  */
                  #else
                  OSTaskCreate(OSTaskIdle, (void *)0, &OSTaskIdleStk[0], OS_IDLE_PRIO);
                  #endif
              #endif
 307   1      
 308   1      #if OS_TASK_STAT_EN 
                  #if OS_TASK_CREATE_EXT_EN
                      #if OS_STK_GROWTH == 1
                      OSTaskCreateExt(OSTaskStat, 
                                      (void *)0,                                /* No args passed to OSTaskStat()    */
                                      &OSTaskStatStk[OS_TASK_STAT_STK_SIZE - 1],/* Set Top-Of-Stack                  */
                                      OS_STAT_PRIO,                             /* One higher than the idle task     */
                                      OS_TASK_STAT_ID,
                                      &OSTaskStatStk[0],                        /* Set Bottom-Of-Stack               */
                                      OS_TASK_STAT_STK_SIZE, 
                                      (void *)0,                                /* No TCB extension                  */
                                      OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);  /* Enable stack checking + clear  */
                      #else
                      OSTaskCreateExt(OSTaskStat, 
                                      (void *)0,                                /* No args passed to OSTaskStat()    */
                                      &OSTaskStatStk[0],                        /* Set Top-Of-Stack                  */
                                      OS_STAT_PRIO,                             /* One higher than the idle task     */
                                      OS_TASK_STAT_ID,
                                      &OSTaskStatStk[OS_TASK_STAT_STK_SIZE - 1],/* Set Bottom-Of-Stack               */
                                      OS_TASK_STAT_STK_SIZE, 
                                      (void *)0,                                /* No TCB extension                  */
                                      OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);  /* Enable stack checking + clear  */
                      #endif
                  #else
                      #if OS_STK_GROWTH == 1
                      OSTaskCreate(OSTaskStat, 
                                   (void *)0,                                   /* No args passed to OSTaskStat()    */
                                   &OSTaskStatStk[OS_TASK_STAT_STK_SIZE - 1],   /* Set Top-Of-Stack                  */
                                   OS_STAT_PRIO);                               /* One higher than the idle task     */
                      #else
                      OSTaskCreate(OSTaskStat, 
                                   (void *)0,                                   /* No args passed to OSTaskStat()    */
                                   &OSTaskStatStk[0],                           /* Set Top-Of-Stack                  */
                                   OS_STAT_PRIO);                               /* One higher than the idle task     */
                      #endif
                  #endif
              #endif
 345   1      }
 346          /*$PAGE*/
 347          /*
 348          *********************************************************************************************************
 349          *                                              ENTER ISR
 350          *
 351          * Description: This function is used to notify uC/OS-II that you are about to service an interrupt
 352          *              service routine (ISR).  This allows uC/OS-II to keep track of interrupt nesting and thus
 353          *              only perform rescheduling at the last nested ISR.
 354          *
 355          * Arguments  : none
 356          *
 357          * Returns    : none
 358          *
 359          * Notes      : 1) Your ISR can directly increment OSIntNesting without calling this function because 
 360          *                 OSIntNesting has been declared 'global'.  You MUST, however, be sure that the increment
C51 COMPILER V8.08   OS_CORE                                                               04/13/2009 13:31:21 PAGE 7   

 361          *                 is performed 'indivisibly' by your processor to ensure proper access to this critical
 362          *                 resource.
 363          *              2) You MUST still call OSIntExit() even though you increment OSIntNesting directly.
 364          *              3) You MUST invoke OSIntEnter() and OSIntExit() in pair.  In other words, for every call
 365          *                 to OSIntEnter() at the beginning of the ISR you MUST have a call to OSIntExit() at the
 366          *                 end of the ISR.
 367          *********************************************************************************************************
 368          */
 369          
 370          void OSIntEnter(void) 
 371          {
 372   1          
 373   1              #if OS_CRITICAL_METHOD == 2
 374   1              data int_ss;
 375   1              #endif 
 376   1      
 377   1              OS_ENTER_CRITICAL();
 378   1          OSIntNesting++;                              /* Increment ISR nesting level                        */
 379   1          OS_EXIT_CRITICAL();
 380   1      }
 381          /*$PAGE*/
 382          /*
 383          *********************************************************************************************************
 384          *                                               EXIT ISR
 385          *
 386          * Description: This function is used to notify uC/OS-II that you have completed serviving an ISR.  When 
 387          *              the last nested ISR has completed, uC/OS-II will call the scheduler to determine whether
 388          *              a new, high-priority task, is ready to run.
 389          *
 390          * Arguments  : none
 391          *
 392          * Returns    : none
 393          *
 394          * Notes      : 1) You MUST invoke OSIntEnter() and OSIntExit() in pair.  In other words, for every call
 395          *                 to OSIntEnter() at the beginning of the ISR you MUST have a call to OSIntExit() at the
 396          *                 end of the ISR.
 397          *              2) Rescheduling is prevented when the scheduler is locked (see OSSchedLock())
 398          *********************************************************************************************************
 399          */
 400          
 401          void OSIntExit(void)
 402          {
 403   1          #if OS_CRITICAL_METHOD == 2
 404   1              unsigned DTYPE int_ss;
 405   1              #endif 
 406   1      
 407   1              OS_ENTER_CRITICAL();
 408   1          if ((--OSIntNesting | OSLockNesting) == 0) { /* Reschedule only if all ISRs completed & not locked */
 409   2              OSIntExitY    = OSUnMapTbl[OSRdyGrp];
 410   2              OSPrioHighRdy = (INT8U)((OSIntExitY << 3) + OSUnMapTbl[OSRdyTbl[OSIntExitY]]);
 411   2              if (OSPrioHighRdy != OSPrioCur) {        /* No context switch if current task is highest ready */
 412   3                  OSTCBHighRdy  = OSTCBPrioTbl[OSPrioHighRdy];
 413   3                  OSCtxSwCtr++;                        /* Keep track of the number of context switches       */
 414   3                  OSIntCtxSw();                        /* Perform interrupt level context switch             */
 415   3              }
 416   2          }
 417   1          OS_EXIT_CRITICAL();
 418   1      }
 419          /*$PAGE*/
 420          /*
 421          *********************************************************************************************************
 422          *                                              SCHEDULER
C51 COMPILER V8.08   OS_CORE                                                               04/13/2009 13:31:21 PAGE 8   

 423          *
 424          * Description: This function is called by other uC/OS-II services to determine whether a new, high
 425          *              priority task has been made ready to run.  This function is invoked by TASK level code
 426          *              and is not used to reschedule tasks from ISRs (see OSIntExit() for ISR rescheduling).
 427          *
 428          * Arguments  : none
 429          *
 430          * Returns    : none
 431          *
 432          * Notes      : 1) This function is INTERNAL to uC/OS-II and your application should not call it.
 433          *              2) Rescheduling is prevented when the scheduler is locked (see OSSchedLock())
 434          *********************************************************************************************************
 435          */
 436          
 437          void OSSched(void)reentrant
 438          {
 439   1          #if OS_CRITICAL_METHOD == 2
 440   1              unsigned DTYPE int_ss;
 441   1              #endif 
 442   1      
 443   1              INT8U y;
 444   1      
 445   1      
 446   1          OS_ENTER_CRITICAL();
 447   1          if ((OSLockNesting | OSIntNesting) == 0) {    /* Task scheduling must be enabled and not ISR level  */
 448   2              y                  = OSUnMapTbl[OSRdyGrp];    /* Get pointer to highest priority task ready to run

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲一区二区视频在线| 精品中文字幕一区二区| 蜜桃av一区二区| 成人的网站免费观看| 欧美一区午夜精品| 亚洲欧美色图小说| 国产成人av一区二区三区在线观看| 欧洲一区二区三区在线| 欧美激情综合五月色丁香小说| 首页国产丝袜综合| 在线区一区二视频| 国产精品久久久久永久免费观看 | 91在线高清观看| 精品国产污污免费网站入口 | 福利一区二区在线| 日韩午夜小视频| 亚洲电影你懂得| 在线视频国内一区二区| 中文字幕在线不卡视频| 成人天堂资源www在线| 久久免费国产精品| 国产一区二区三区观看| 精品区一区二区| 韩日欧美一区二区三区| 日韩三级免费观看| 蜜臀国产一区二区三区在线播放| 在线国产亚洲欧美| 一区二区三区日本| 91高清视频免费看| 亚洲一区在线免费观看| 欧美日韩视频在线第一区| 夜夜亚洲天天久久| 欧美视频你懂的| 亚洲一区自拍偷拍| 91精品国产综合久久久久| 日韩经典中文字幕一区| 日韩一区二区中文字幕| 国产在线播放一区二区三区| 久久久精品免费观看| 粉嫩av一区二区三区| 中文字幕一区二区三区在线播放 | 奇米精品一区二区三区在线观看| 欧美浪妇xxxx高跟鞋交| 婷婷亚洲久悠悠色悠在线播放 | 欧美二区在线观看| 麻豆专区一区二区三区四区五区| 精品国产自在久精品国产| 黄一区二区三区| 国产精品每日更新在线播放网址 | 不卡的看片网站| 亚洲同性同志一二三专区| 欧美色偷偷大香| 喷水一区二区三区| 久久久99精品久久| 色综合天天综合网国产成人综合天| 一区二区三区四区在线| 9191久久久久久久久久久| 久久疯狂做爰流白浆xx| 国产精品网站在线播放| 欧美午夜电影在线播放| 婷婷亚洲久悠悠色悠在线播放| 精品久久久久久亚洲综合网| av电影天堂一区二区在线| 日日摸夜夜添夜夜添国产精品 | 亚洲bt欧美bt精品777| 日韩欧美国产一二三区| 成熟亚洲日本毛茸茸凸凹| 亚洲免费观看高清完整版在线| 欧美一级高清片| 成人自拍视频在线观看| 日韩电影在线一区| 中文字幕中文在线不卡住| 5月丁香婷婷综合| 成人免费不卡视频| 天天亚洲美女在线视频| 中文字幕在线播放不卡一区| 欧美一区二区在线免费播放| 波多野洁衣一区| 久久国产综合精品| 亚洲免费毛片网站| 国产日产亚洲精品系列| 日韩一区二区三区电影| 日本久久精品电影| 国产成人av网站| 麻豆精品一二三| 亚洲香肠在线观看| 中文字幕一区av| 久久品道一品道久久精品| 91精品国产综合久久精品麻豆| 91日韩一区二区三区| 国产毛片精品视频| 青青草视频一区| 日韩中文字幕麻豆| 亚洲综合一二区| 亚洲欧美日韩一区二区| 久久久久9999亚洲精品| 日韩午夜精品视频| 欧美一区二区免费视频| 欧美午夜精品久久久| 在线视频亚洲一区| 91麻豆国产香蕉久久精品| 国产福利一区二区三区视频在线| 日本aⅴ亚洲精品中文乱码| 亚洲国产精品一区二区久久恐怖片| 国产精品免费人成网站| 久久青草欧美一区二区三区| 精品理论电影在线| 日韩欧美国产电影| 精品国产一区二区三区四区四| 日韩一区二区免费电影| 欧美videos大乳护士334| 日韩欧美久久久| 精品久久久久久久久久久久久久久久久 | 欧美精品高清视频| 欧美色网站导航| 在线视频观看一区| 欧美撒尿777hd撒尿| 欧美性猛交xxxx黑人交| 欧美色男人天堂| 欧美日免费三级在线| 7777精品伊人久久久大香线蕉超级流畅| 色婷婷亚洲精品| 欧美视频日韩视频在线观看| 欧美日韩高清一区| 日韩欧美一区中文| 国产亚洲人成网站| 中文字幕一区二区三中文字幕| 亚洲天堂精品在线观看| 亚洲综合色区另类av| 日韩中文欧美在线| 国产在线一区二区| 豆国产96在线|亚洲| 一本色道综合亚洲| 欧美日韩不卡一区| 久久亚洲精品小早川怜子| 国产精品久久久久aaaa樱花| 亚洲精品成人天堂一二三| 婷婷久久综合九色综合伊人色| 青青草视频一区| 风间由美中文字幕在线看视频国产欧美 | 91成人免费在线| 日韩欧美国产麻豆| 国产精品久久三区| 午夜久久福利影院| 国产成人自拍网| 在线看国产日韩| 久久影音资源网| 亚洲精品视频在线| 久久99国产精品尤物| 91在线国内视频| 欧美一级爆毛片| 亚洲日本在线a| 日韩电影一区二区三区四区| 懂色一区二区三区免费观看| 欧美日韩色综合| 国产精品网站在线观看| 日产精品久久久久久久性色 | 国产一区二区在线影院| 91麻豆国产福利在线观看| 精品99一区二区| 亚洲午夜视频在线观看| 大白屁股一区二区视频| 欧美一级在线视频| 亚洲激情自拍视频| 国产91色综合久久免费分享| 欧美福利视频一区| 成人免费在线播放视频| 久草在线在线精品观看| 欧美性三三影院| 国产精品日韩精品欧美在线| 老司机午夜精品| 欧美日韩成人综合天天影院 | 欧美色网站导航| 成人欧美一区二区三区| 精品亚洲成a人在线观看 | 蜜臀av性久久久久蜜臀av麻豆| 99国产精品国产精品久久| 久久影院午夜片一区| 日韩激情av在线| 欧美三级电影精品| 一区二区三区国产| 不卡的av在线播放| 中文字幕免费不卡| 国产真实乱对白精彩久久| 欧美一级二级三级蜜桃| 日韩制服丝袜先锋影音| 欧美日本国产一区| 亚洲成av人片观看| 欧美午夜免费电影| 一区二区三区四区国产精品| 91丨porny丨中文| 国产精品乱人伦中文| 国产传媒久久文化传媒| 2014亚洲片线观看视频免费| 美女性感视频久久| 日韩欧美一级精品久久| 蜜桃精品视频在线观看| 精品国免费一区二区三区| 国产一区二区网址| 久久精品这里都是精品|