????????????????????????????????????????????к??????????????????100?????????????????101?????????101?????????????????????????????????????????????????ζ?????????101????????????????檔??????????????????????????????????????????????????????????滹??????????????????????????????????????????????飬??Ч???????????????????????????????????????????????????????????????л?????β????????????????o??????????л???????????????while(1)???????????????е?OSTimedly()????????????????????????????????????????ж??и???????????????????????????????0????????????????????????????????????С????????????????????????????????????????????????????ж???????????????????????

/*
 *????????????????ж??е???
*/
void  OSTimeTick (void)
{
    int8 index;
    TCB  *pTCB;
    uint8 flagFirstTask=0;
    OS_CPU_SR  cpu_sr = 0;
    OS_ENTER_CRITICAL();
    /*?????*/
    OSNewTCB = NULL;
 /*???????*/
    if (OSScheLock != 0)
    {
       OS_EXIT_CRITICAL();
       return;
    }
 for (index = 0;index < TaskNUM;index++)
 {
     pTCB = OSTCBTable+index;
    /*???????????????????????????--*/
     if (pTCB->TCBDelay > 0)
     {
        pTCB->TCBDelay--;
        continue;
     }
     /*??????????*/
     if (pTCB->TaskStat == OS_Task_Pend)
     {
         continue;
     }
    /*???????????????????????????????*/
   /* ????????????????????????*/
  if (flagFirstTask==0)
  {
   /*?????????????????
     ??????????????????*/
     if (OSCurTCB->CurPriority < pTCB->CurPriority)
     {
        flagFirstTask = 1;
        OSNewTCB = pTCB;
        continue;
     }
    /*????????????????????*/
    if (OSCurTCB->CurPriority > pTCB->CurPriority)
   {
       if (OSNewTCB == NULL)
      {
          flagFirstTask = 1;
          OSNewTCB = pTCB;
          continue  ;
      }
      else
     {
         flagFirstTask = 1;
        continue  ;
      }
   }
 
   /*?????????????????
     ????????????????????*/
   if (OSCurTCB->CurPriority == pTCB->CurPriority)
   {
    /*?????????????????*/
    if ((pTCB > OSCurTCB)||(pTCB == OSCurTCB))
    {
     flagFirstTask = 1;
     OSNewTCB = pTCB;
     continue  ;
    }
    /*??????????????????????
      ?????????????????????????????????*/
    if ((pTCB < OSCurTCB)&&(OSNewTCB == NULL))
    {
      OSNewTCB = pTCB;
      continue;
    }
   }
   continue;
  }
 
 }
 OS_EXIT_CRITICAL();
}

   ??????ж???????????????????????????????ú??????????????????????????????????????????????????????????????????????? OSNewTCB = pTCB;????????????????????? OSNewTCB ??

void SysTick_Handler(void)
{
 OSIntEnter();  //?????ж?
 OSTimeTick();
 OSIntExit();        //?????????л????ж?
}

/*
*????ж???????
*/
void  OSIntEnter (void)
{
    if (NULL != OSCurTCB)
   {
        if (OSIntNesting < 255u)
        {
            OSIntNesting++;                      /* Increment ISR nesting level                        */
        }
    }
}

/*
*?ж???????????????ж???????л?
*/
void  OSIntExit (void)
{
     OS_CPU_SR  cpu_sr = 0u;
    if (NULL!= OSCurTCB)
    {
        OS_ENTER_CRITICAL();
        if (OSIntNesting > 0u)
        {                         
            OSIntNesting--;
        }
        if (OSIntNesting == 0u)
        {                        
            /* ?????е??ж????????ж???????  */
            if (OSNewTCB != OSCurTCB)
            {
              /* ?ж???????л?  */
              OSIntCtxSw();  
            }
        }
        OS_EXIT_CRITICAL();
    }
}