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

📄 os_core.lst

📁 Small RTOS 下SJA1000驱动程序的编写。主要介绍了在实时操作系统Small RTOS下
💻 LST
📖 第 1 页 / 共 3 页
字号:
 362          ** 修改人: 陈明计
 363          ** 日 期: 2002年12月30日
 364          **------------------------------------------------------------------------------------------------------
 365          ** 修改人:
 366          ** 日 期:
 367          **-------------------------------------------------------------------------------------------------------
 368          ********************************************************************************************************/
 369                  void  OSSched(void)
 370          
 371          {
 372   1          uint8 temp;
 373   1      
 374   1          OS_ENTER_CRITICAL();
*** ERROR C202 IN LINE 374 OF ..\OS\OS_CORE.C: 'EA': undefined identifier
 375   1      #if EN_OS_INT_ENTER > 0
 376   1          if (OSIntNesting == 0)              /* 是否是中断中调用 */
 377   1          {
 378   2      #endif
 379   2      
 380   2      #if OS_MAX_TASKS < 9
                              /* 查找处于就绪状态的任务中优先级最高的任务 */
                      temp = OSTaskRuning;
                      for (OSNextTaskID = 0; OSNextTaskID < OS_MAX_TASKS; OSNextTaskID++)
                      {
                          if ((temp & 0x01) != 0)
                          {
                              break;
                          }
                          temp = temp >> 1;
                      }
                      OS_TASK_SW();                   /* 进行任务调度 */
              #else
 393   2                      /* 查找处于就绪状态的任务中优先级最高的任务 */
 394   2              temp = OSTaskRuning % 256;
 395   2              for (OSNextTaskID = 0; OSNextTaskID < 8; OSNextTaskID++)
 396   2              {
 397   3                  if ((temp & 0x01) != 0)
 398   3                  {
 399   4                      goto TaskSw;
 400   4                  }
 401   3                  temp = temp >> 1;
 402   3              }
 403   2      
 404   2              temp = OSTaskRuning / 256 ;
 405   2              for (; OSNextTaskID < OS_MAX_TASKS; OSNextTaskID++)
 406   2              {
 407   3                  if ((temp & 0x01) != 0)
 408   3                  {
 409   4                      break;
 410   4                  }
 411   3                  temp = temp >> 1;
 412   3              }
 413   2      TaskSw:
 414   2              OS_TASK_SW();                   /* 进行任务调度 */
 415   2      #endif
 416   2      
C51 COMPILER V7.01  OS_CORE                                                                03/06/2003 10:20:02 PAGE 8   

 417   2      #if EN_OS_INT_ENTER > 0
 418   2          }
 419   1      #endif
 420   1          OS_EXIT_CRITICAL();
*** ERROR C202 IN LINE 420 OF ..\OS\OS_CORE.C: 'EA': undefined identifier
 421   1      }
 422          
 423          /*********************************************************************************************************
 424          ** 函数名称: OSTimeTick
 425          ** 功能描述: 系统时钟处理函数,处理各个任务的延时
 426          ** 输 入: 无
 427          ** 输 出: 无
 428          ** 全局变量: OSWaitTick
 429          ** 调用模块: OSIntSendSignal
 430          **
 431          ** 作 者: 陈明计
 432          ** 日 期: 2002年6月20日
 433          **-------------------------------------------------------------------------------------------------------
 434          ** 修改人: 陈明计
 435          ** 日 期: 2002年9月1日
 436          **-------------------------------------------------------------------------------------------------------
 437          ** 修改人: 陈明计
 438          ** 日 期: 2002年9月4日
 439          **------------------------------------------------------------------------------------------------------
 440          ** 修改人: 陈明计
 441          ** 日 期: 2002年12月30日
 442          **------------------------------------------------------------------------------------------------------
 443          ** 修改人:
 444          ** 日 期:
 445          **-------------------------------------------------------------------------------------------------------
 446          ********************************************************************************************************/
 447                  void  OSTimeTick(void)
 448          {
 449   1          uint8 i;
 450   1      
 451   1          for (i = 0; i < OS_MAX_TASKS; i++)                 
 452   1          {
 453   2              if (OSWaitTick[i] != 0 )
 454   2              {
 455   3                  OSWaitTick[i]--;
*** ERROR C187 IN LINE 455 OF ..\OS\OS_CORE.C: not an lvalue
 456   3                  if (OSWaitTick[i] == 0)
 457   3                  {
 458   4                      OSIntSendSignal(i);
 459   4                  }
 460   3              }
 461   2          }
 462   1      }
 463          
 464          /*********************************************************************************************************
 465          ** 函数名称: OSWait
 466          ** 功能描述: 系统等待函数,任务调用此函数可以等待一定时间或信号
 467          ** 输 入: typ: 等待事件类型,目前可以取以下值,或是其中任意个值的按位或
 468          **             K_SIG: 等待信号
 469          **             K_TMO: 等待超时
 470          **        ticks : 等待超时时的系统嘀嗒数
 471          ** 输 出 : NOT_OK : 参数错误
 472          **         TMO_EVENT : 超时到
 473          **         SIG_EVENT : 有信号
 474          ** 全局变量: OSWaitTick
 475          ** 调用模块: OSClearSignal
 476          **
C51 COMPILER V7.01  OS_CORE                                                                03/06/2003 10:20:02 PAGE 9   

 477          ** 作 者: 陈明计
 478          ** 日 期: 2002年6月20日
 479          **-------------------------------------------------------------------------------------------------------
 480          ** 修改人: 陈明计
 481          ** 日 期: 2002年9月1日
 482          **-------------------------------------------------------------------------------------------------------
 483          ** 修改人: 陈明计
 484          ** 日 期: 2002年9月4日
 485          **------------------------------------------------------------------------------------------------------
 486          ** 修改人: 陈明计
 487          ** 日 期: 2002年9月9日
 488          **------------------------------------------------------------------------------------------------------
 489          ** 修改人: 陈明计
 490          ** 日 期: 2002年10月9日
 491          **------------------------------------------------------------------------------------------------------
 492          ** 修改人: 陈明计
 493          ** 日 期: 2002年12月2日
 494          **------------------------------------------------------------------------------------------------------
 495          ** 修改人:
 496          ** 日 期:
 497          **-------------------------------------------------------------------------------------------------------
 498          ********************************************************************************************************/
 499                  uint8 OSWait(uint8 typ, uint8 ticks)
 500          
 501          {
 502   1          OSWaitTick[OSTaskID] = ticks;               /* 设置超时时间         */
 503   1                                                      /* 可以优化寄存器的使用  */
 504   1          switch(typ)
 505   1          {
 506   2          case K_SIG:                                 /* 等待信号,即挂起自己  */
 507   2              OSWaitTick[OSTaskID] = 0;               /* 没有超时处理         */
 508   2              OSClearSignal(OSTaskID);                /* 任务进入等待状态     */
 509   2              OSSched();                              /* 运行下一个任务       */
 510   2              return SIG_EVENT;
 511   2          case K_TMO:                                 /* 等待超时,即延时一段时间 */
 512   2              OS_ENTER_CRITICAL();
*** ERROR C202 IN LINE 512 OF ..\OS\OS_CORE.C: 'EA': undefined identifier
 513   2              while (OSWaitTick[OSTaskID] != 0)       /* 判断超时时间是否到   */
 514   2              {
 515   3                  OSClearSignal(OSTaskID);            /* 任务进入等待状态     */
 516   3                  OSSched();                          /* 运行下一个任务       */
 517   3              }
 518   2              OS_EXIT_CRITICAL();
*** ERROR C202 IN LINE 518 OF ..\OS\OS_CORE.C: 'EA': undefined identifier
 519   2              return TMO_EVENT;
 520   2          case (K_TMO | K_SIG):                       /* 等待信号(挂起自己)直到超时  */
 521   2                                                      /* 别的任务或中断可以恢复它 */
 522   2              OS_ENTER_CRITICAL();
*** ERROR C202 IN LINE 522 OF ..\OS\OS_CORE.C: 'EA': undefined identifier
 523   2              if (OSWaitTick[OSTaskID] == 0)          /* 判断超时时间是否到   */
 524   2              {
 525   3                  return TMO_EVENT;
 526   3              }
 527   2              OSClearSignal(OSTaskID);                /* 任务进入等待状态     */
 528   2              OS_EXIT_CRITICAL();
*** ERROR C202 IN LINE 528 OF ..\OS\OS_CORE.C: 'EA': undefined identifier
 529   2              OSSched();                              /* 运行下一个任务       */
 530   2              if (OSWaitTick[OSTaskID] != 0)
 531   2              {
 532   3                  OSWaitTick[OSTaskID] = 0;
 533   3                  return SIG_EVENT;
 534   3              }
C51 COMPILER V7.01  OS_CORE                                                                03/06/2003 10:20:02 PAGE 10  

 535   2              return TMO_EVENT;
 536   2          default:
 537   2              OSWaitTick[OSTaskID] = 0;
 538   2              return NOT_OK;
 539   2          }
 540   1      }

C51 COMPILATION COMPLETE.  0 WARNING(S),  16 ERROR(S)

⌨️ 快捷键说明

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