⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 os_core.lst

📁 称植到lpc2124上的UCOS2.85版 是本人初学移植和ARM的成果 可能已有人上传类似的了
💻 LST
📖 第 1 页 / 共 5 页
字号:
 373:../OSsrc/os_core.c **** * Description: This function is used to prevent rescheduling to take place.  This allows your appli
 374:../OSsrc/os_core.c **** *              to prevent context switches until you are ready to permit context switching.
 375:../OSsrc/os_core.c **** *
 376:../OSsrc/os_core.c **** * Arguments  : none
 377:../OSsrc/os_core.c **** *
 378:../OSsrc/os_core.c **** * Returns    : none
 379:../OSsrc/os_core.c **** *
 380:../OSsrc/os_core.c **** * Notes      : 1) You MUST invoke OSSchedLock() and OSSchedUnlock() in pair.  In other words, for e
 381:../OSsrc/os_core.c **** *                 call to OSSchedLock() you MUST have a call to OSSchedUnlock().
 382:../OSsrc/os_core.c **** ***************************************************************************************************
 383:../OSsrc/os_core.c **** */
 384:../OSsrc/os_core.c **** 
 385:../OSsrc/os_core.c **** #if OS_SCHED_LOCK_EN > 0
 386:../OSsrc/os_core.c **** void  OSSchedLock (void)
 387:../OSsrc/os_core.c **** {
 388:../OSsrc/os_core.c **** #if OS_CRITICAL_METHOD == 3                      /* Allocate storage for CPU status register       
 389:../OSsrc/os_core.c ****     OS_CPU_SR  cpu_sr = 0;
 390:../OSsrc/os_core.c **** #endif
 391:../OSsrc/os_core.c **** 
 392:../OSsrc/os_core.c **** 
 393:../OSsrc/os_core.c **** 
 394:../OSsrc/os_core.c ****     if (OSRunning == OS_TRUE) {                  /* Make sure multitasking is running              
 395:../OSsrc/os_core.c ****         OS_ENTER_CRITICAL();
 396:../OSsrc/os_core.c ****         if (OSIntNesting == 0) {                 /* Can't call from an ISR                         
 397:../OSsrc/os_core.c ****             if (OSLockNesting < 255u) {          /* Prevent OSLockNesting from wrapping back to 0  
 398:../OSsrc/os_core.c ****                 OSLockNesting++;                 /* Increment lock nesting level                   
 399:../OSsrc/os_core.c ****             }
 400:../OSsrc/os_core.c ****         }
 401:../OSsrc/os_core.c ****         OS_EXIT_CRITICAL();
 402:../OSsrc/os_core.c ****     }
 403:../OSsrc/os_core.c **** }
 404:../OSsrc/os_core.c **** #endif
 405:../OSsrc/os_core.c **** 
 406:../OSsrc/os_core.c **** /*$PAGE*/
 407:../OSsrc/os_core.c **** /*
 408:../OSsrc/os_core.c **** ***************************************************************************************************
 409:../OSsrc/os_core.c **** *                                          ENABLE SCHEDULING
 410:../OSsrc/os_core.c **** *
 411:../OSsrc/os_core.c **** * Description: This function is used to re-allow rescheduling.
 412:../OSsrc/os_core.c **** *
 413:../OSsrc/os_core.c **** * Arguments  : none
 414:../OSsrc/os_core.c **** *
 415:../OSsrc/os_core.c **** * Returns    : none
 416:../OSsrc/os_core.c **** *
 417:../OSsrc/os_core.c **** * Notes      : 1) You MUST invoke OSSchedLock() and OSSchedUnlock() in pair.  In other words, for e
 418:../OSsrc/os_core.c **** *                 call to OSSchedLock() you MUST have a call to OSSchedUnlock().
 419:../OSsrc/os_core.c **** ***************************************************************************************************
 420:../OSsrc/os_core.c **** */
 421:../OSsrc/os_core.c **** 
 422:../OSsrc/os_core.c **** #if OS_SCHED_LOCK_EN > 0
 423:../OSsrc/os_core.c **** void  OSSchedUnlock (void)
 424:../OSsrc/os_core.c **** {
 425:../OSsrc/os_core.c **** #if OS_CRITICAL_METHOD == 3                                /* Allocate storage for CPU status regis
 426:../OSsrc/os_core.c ****     OS_CPU_SR  cpu_sr = 0;
 427:../OSsrc/os_core.c **** #endif
 428:../OSsrc/os_core.c **** 
 429:../OSsrc/os_core.c **** 
 430:../OSsrc/os_core.c **** 
 431:../OSsrc/os_core.c ****     if (OSRunning == OS_TRUE) {                            /* Make sure multitasking is running    
 432:../OSsrc/os_core.c ****         OS_ENTER_CRITICAL();
 433:../OSsrc/os_core.c ****         if (OSLockNesting > 0) {                           /* Do not decrement if already 0        
 434:../OSsrc/os_core.c ****             OSLockNesting--;                               /* Decrement lock nesting level         
 435:../OSsrc/os_core.c ****             if (OSLockNesting == 0) {                      /* See if scheduler is enabled and ...  
 436:../OSsrc/os_core.c ****                 if (OSIntNesting == 0) {                   /* ... not in an ISR                    
 437:../OSsrc/os_core.c ****                     OS_EXIT_CRITICAL();
 438:../OSsrc/os_core.c ****                     OS_Sched();                            /* See if a HPT is ready                
 439:../OSsrc/os_core.c ****                 } else {
 440:../OSsrc/os_core.c ****                     OS_EXIT_CRITICAL();
 441:../OSsrc/os_core.c ****                 }
 442:../OSsrc/os_core.c ****             } else {
 443:../OSsrc/os_core.c ****                 OS_EXIT_CRITICAL();
 444:../OSsrc/os_core.c ****             }
 445:../OSsrc/os_core.c ****         } else {
 446:../OSsrc/os_core.c ****             OS_EXIT_CRITICAL();
 447:../OSsrc/os_core.c ****         }
 448:../OSsrc/os_core.c ****     }
 449:../OSsrc/os_core.c **** }
 450:../OSsrc/os_core.c **** #endif
 451:../OSsrc/os_core.c **** 
 452:../OSsrc/os_core.c **** /*$PAGE*/
 453:../OSsrc/os_core.c **** /*
 454:../OSsrc/os_core.c **** ***************************************************************************************************
 455:../OSsrc/os_core.c **** *                                          START MULTITASKING
 456:../OSsrc/os_core.c **** *
 457:../OSsrc/os_core.c **** * Description: This function is used to start the multitasking process which lets uC/OS-II manages 
 458:../OSsrc/os_core.c **** *              task that you have created.  Before you can call OSStart(), you MUST have called OSI
 459:../OSsrc/os_core.c **** *              and you MUST have created at least one task.
 460:../OSsrc/os_core.c **** *
 461:../OSsrc/os_core.c **** * Arguments  : none
 462:../OSsrc/os_core.c **** *
 463:../OSsrc/os_core.c **** * Returns    : none
 464:../OSsrc/os_core.c **** *
 465:../OSsrc/os_core.c **** * Note       : OSStartHighRdy() MUST:
 466:../OSsrc/os_core.c **** *                 a) Call OSTaskSwHook() then,
 467:../OSsrc/os_core.c **** *                 b) Set OSRunning to OS_TRUE.
 468:../OSsrc/os_core.c **** *                 c) Load the context of the task pointed to by OSTCBHighRdy.
 469:../OSsrc/os_core.c **** *                 d_ Execute the task.
 470:../OSsrc/os_core.c **** ***************************************************************************************************
 471:../OSsrc/os_core.c **** */
 472:../OSsrc/os_core.c **** 
 473:../OSsrc/os_core.c **** void  OSStart (void)
 474:../OSsrc/os_core.c **** {
 475:../OSsrc/os_core.c ****     if (OSRunning == OS_FALSE) {
 476:../OSsrc/os_core.c ****         OS_SchedNew();                               /* Find highest priority's task priority numbe
 477:../OSsrc/os_core.c ****         OSPrioCur     = OSPrioHighRdy;
 478:../OSsrc/os_core.c ****         OSTCBHighRdy  = OSTCBPrioTbl[OSPrioHighRdy]; /* Point to highest priority task ready to run
 479:../OSsrc/os_core.c ****         OSTCBCur      = OSTCBHighRdy;
 480:../OSsrc/os_core.c ****         OSStartHighRdy();                            /* Execute target specific code to start task 
 481:../OSsrc/os_core.c ****     }
 482:../OSsrc/os_core.c **** }
 483:../OSsrc/os_core.c **** /*$PAGE*/
 484:../OSsrc/os_core.c **** /*
 485:../OSsrc/os_core.c **** ***************************************************************************************************
 486:../OSsrc/os_core.c **** *                                        STATISTICS INITIALIZATION
 487:../OSsrc/os_core.c **** *
 488:../OSsrc/os_core.c **** * Description: This function is called by your application to establish CPU usage by first determin
 489:../OSsrc/os_core.c **** *              how high a 32-bit counter would count to in 1 second if no other tasks were to execu
 490:../OSsrc/os_core.c **** *              during that time.  CPU usage is then determined by a low priority task which keeps t
 491:../OSsrc/os_core.c **** *              of this 32-bit counter every second but this time, with other tasks running.  CPU us
 492:../OSsrc/os_core.c **** *              determined by:
 493:../OSsrc/os_core.c **** *
 494:../OSsrc/os_core.c **** *                                             OSIdleCtr
 495:../OSsrc/os_core.c **** *                 CPU Usage (%) = 100 * (1 - ------------)
 496:../OSsrc/os_core.c **** *                                            OSIdleCtrMax
 497:../OSsrc/os_core.c **** *
 498:../OSsrc/os_core.c **** * Arguments  : none
 499:../OSsrc/os_core.c **** *
 500:../OSsrc/os_core.c **** * Returns    : none
 501:../OSsrc/os_core.c **** ***************************************************************************************************
 502:../OSsrc/os_core.c **** */
 503:../OSsrc/os_core.c **** 
 504:../OSsrc/os_core.c **** #if OS_TASK_STAT_EN > 0
 505:../OSsrc/os_core.c **** void  OSStatInit (void)
 506:../OSsrc/os_core.c **** {
 507:../OSsrc/os_core.c **** #if OS_CRITICAL_METHOD == 3                      /* Allocate storage for CPU status register       
 508:../OSsrc/os_core.c ****     OS_CPU_SR  cpu_sr = 0;
 509:../OSsrc/os_core.c **** #endif
 510:../OSsrc/os_core.c **** 
 511:../OSsrc/os_core.c **** 
 512:../OSsrc/os_core.c **** 
 513:../OSsrc/os_core.c ****     OSTimeDly(2);                                /* Synchronize with clock tick                    
 514:../OSsrc/os_core.c ****     OS_ENTER_CRITICAL();
 515:../OSsrc/os_core.c ****     OSIdleCtr    = 0L;                           /* Clear idle counter                             
 516:../OSsrc/os_core.c ****     OS_EXIT_CRITICAL();
 517:../OSsrc/os_core.c ****     OSTimeDly(OS_TICKS_PER_SEC / 10);            /* Determine MAX. idle counter value for 1/10 seco
 518:../OSsrc/os_core.c ****     OS_ENTER_CRITICAL();
 519:../OSsrc/os_core.c ****     OSIdleCtrMax = OSIdleCtr;                    /* Store maximum idle counter count in 1/10 second
 520:../OSsrc/os_core.c ****     OSStatRdy    = OS_TRUE;
 521:../OSsrc/os_core.c ****     OS_EXIT_CRITICAL();
 522:../OSsrc/os_core.c **** }
 523:../OSsrc/os_core.c **** #endif
 524:../OSsrc/os_core.c **** /*$PAGE*/
 525:../OSsrc/os_core.c **** /*
 526:../OSsrc/os_core.c **** ***************************************************************************************************
 527:../OSsrc/os_core.c **** *                                         PROCESS SYSTEM TICK
 528:../OSsrc/os_core.c **** *
 529:../OSsrc/os_core.c **** * Description: This function is used to signal to uC/OS-II the occurrence of a 'system tick' (also 
 530:../OSsrc/os_core.c **** *              as a 'clock tick').  This function should be called by the ticker ISR but, can also 
 531:../OSsrc/os_core.c **** *              called by a high priority task.
 532:../OSsrc/os_core.c **** *
 533:../OSsrc/os_core.c **** * Arguments  : none
 534:../OSsrc/os_core.c **** *
 535:../OSsrc/os_core.c **** * Returns    : none
 536:../OSsrc/os_core.c **** ***************************************************************************************************
 537:../OSsrc/os_core.c **** */
 538:../OSsrc/os_core.c **** 
 539:../OSsrc/os_core.c **** void  OSTimeTick (void)
 540:../OSsrc/os_core.c **** {
 541:../OSsrc/os_core.c ****     OS_TCB    *ptcb;
 542:../OSsrc/os_core.c **** #if OS_TICK_STEP_EN > 0
 543:../OSsrc/os_core.c ****     BOOLEAN    step;
 544:../OSsrc/os_core.c **** #endif
 545:../OSsrc/os_core.c **** #if OS_CRITICAL_METHOD == 3                                /* Allocate storage for CPU status regis
 546:../OSsrc/os_core.c ****     OS_CPU_SR  cpu_sr = 0;
 547:../OSsrc/os_core.c **** #endif
 548:../OSsrc/os_core.c **** 
 549:../OSsrc/os_core.c **** 
 550:../OSsrc/os_core.c **** 
 551:../OSsrc/os_core.c **** #if OS_TIME_TICK_HOOK_EN > 0
 552:../OSsrc/os_core.c ****     OSTimeTickHook();                                      /* Call user definable hook             
 553:../OSsrc/os_core.c **** #endif
 554:../OSsrc/os_core.c **** #if OS_TIME_GET_SET_EN > 0
 555:../OSsrc/os_core.c ****     OS_ENTER_CRITICAL();                                   /* Update the 32-bit tick counter       
 556:../OSsrc/os_core.c ****     OSTime++;
 557:../OSsrc/os_core.c ****     OS_EXIT_CRITICAL();
 558:../OSsrc/os_core.c **** #endif
 559:../OSsrc/os_core.c ****     if (OSRunning == OS_TRUE) {
 560:../OSsrc/os_core.c **** #if OS_TICK_STEP_EN > 0
 561:../OSsrc/os_core.c ****         switch (OSTickStepState) {                         /* Determine whether we need to process 
 562:../OSsrc/os_core.c ****             case OS_TICK_STEP_DIS:                         /* Yes, stepping is disabled            
 563:../OSsrc/os_core.c ****                  step = OS_TRUE;
 564:../OSsrc/os_core.c ****                  break;
 565:../OSsrc/os_core.c **** 
 566:../OSsrc/os_core.c ****             case OS_TICK_STEP_WAIT:                        /* No,  waiting for uC/OS-View to set ..
 567:../OSsrc/os_core.c ****                  step = OS_FALSE;                          /*      .. OSTickStepState to OS_TICK_ST
 568:../OSsrc/os_core.c ****                  break;
 569:../OSsrc/os_core.c **** 
 570:../OSsrc/os_core.c ****             case OS_TICK_STEP_ONCE:                        /* Yes, process tick once and wait for n
 571:../OSsrc/os_core.c ****                  step            = OS_TRUE;                /*      ... step command from uC/OS-View
 572:../OSsrc/os_core.c ****                  OSTickStepState = OS_TICK_STEP_WAIT;
 573:../OSsrc/os_core.c ****                  break;
 574:../OSsrc/os_core.c **** 
 575:../OSsrc/os_core.c ****             default:                                       /* Invalid case, correct situation      
 576:../OSsrc/os_core.c ****                  step            = OS_TRUE;
 577:../OSsrc/os_core.c ****                  OSTickStepState = OS_TICK_STEP_DIS;
 578:../OSsrc/os_core.c ****                  break;
 579:../OSsrc/os_core.c ****         }
 580:../OSsrc/os_core.c ****         if (step == OS_FALSE) {                            /* Return if waiting for step command   
 581:../OSsrc/os_core.c ****             return;
 582:../OSsrc/os_core.c ****         }
 583:../OSsrc/os_core.c **** #endif
 584:../OSsrc/os_core.c ****         ptcb = OSTCBList;                                  /* Point at first TCB in TCB list       
 585:../OSsrc/os_core.c ****         while (ptcb->OSTCBPrio != OS_TASK_IDLE_PRIO) {     /* Go through all TCBs in TCB list      
 586:../OSsrc/os_core.c ****             OS_ENTER_CRITICAL();
 587:../OSsrc/os_core.c ****             if (ptcb->OSTCBDly != 0) {                     /* No, Delayed or waiting for event with

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -