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

📄 os_core.lst

📁 Small RTOS 下SJA1000驱动程序的编写。主要介绍了在实时操作系统Small RTOS下
💻 LST
📖 第 1 页 / 共 3 页
字号:
 178          /*********************************************************************************************************
 179          ** 函数名称: OSSendSignal
 180          ** 功能描述: 任务中给指定任务发送信号,既使指定任务就绪
 181          ** 输 入: TaskId : 任务ID
 182          ** 输 出: 无
 183          ** 全局变量: 无
 184          ** 调用模块: OSSched,OSIntSendSignal
 185          **
 186          ** 作 者: 陈明计
 187          ** 日 期: 2002年6月20日
 188          **-------------------------------------------------------------------------------------------------------
 189          ** 修改人: 陈明计
 190          ** 日 期: 2002年9月1日
 191          **-------------------------------------------------------------------------------------------------------
 192          ** 修改人:
 193          ** 日 期:
 194          **-------------------------------------------------------------------------------------------------------
 195          ********************************************************************************************************/
 196                  void OSSendSignal(uint8 TaskId)
 197          
 198          {
 199   1          OSIntSendSignal(TaskId);
 200   1          OSSched();                                              //开始任务切换
 201   1      }
 202          
 203          /*********************************************************************************************************
 204          ** 函数名称: OSClearSignal
 205          ** 功能描述: 清除指定任务信号,既使指定任务休眠
 206          ** 输 入: TaskId : 任务ID
 207          ** 输 出: 无
 208          ** 全局变量: OSTaskRuning
 209          ** 调用模块: 无
 210          **
 211          ** 作 者: 陈明计
 212          ** 日 期: 2002年6月20日
 213          **-------------------------------------------------------------------------------------------------------
 214          ** 修改人: 陈明计
 215          ** 日 期: 2002年9月1日
 216          **-------------------------------------------------------------------------------------------------------
 217          ** 修改人: 陈明计
 218          ** 日 期: 2002年9月4日
 219          **------------------------------------------------------------------------------------------------------
 220          ** 修改人: 陈明计
 221          ** 日 期: 2002年12月30日
 222          **------------------------------------------------------------------------------------------------------
 223          ** 修改人:
 224          ** 日 期:
 225          **-------------------------------------------------------------------------------------------------------
 226          ********************************************************************************************************/
 227          
 228                  void OSClearSignal(uint8 TaskId)
 229          {
 230   1          if (TaskId < OS_MAX_TASKS)
 231   1          {
 232   2              OS_ENTER_CRITICAL();
*** ERROR C202 IN LINE 232 OF ..\OS\OS_CORE.C: 'EA': undefined identifier
 233   2      #if OS_MAX_TASKS < 9
                      OSTaskRuning &= ~OSMapTbl[TaskId];
              #else
 236   2              if (TaskId < 8)
C51 COMPILER V7.01  OS_CORE                                                                03/06/2003 10:20:02 PAGE 5   

 237   2              {
 238   3                  ((uint8 *)(&OSTaskRuning))[LOW_BYTE] &= ~OSMapTbl[TaskId];
*** ERROR C193 IN LINE 238 OF ..\OS\OS_CORE.C: '~': bad operand type
 239   3              }
 240   2              else
 241   2              {
 242   3                  ((uint8 *)(&OSTaskRuning))[HIGH_BYTE] &= ~OSMapTbl[TaskId & 0x07];
*** ERROR C193 IN LINE 242 OF ..\OS\OS_CORE.C: '~': bad operand type
 243   3              }
 244   2      #endif
 245   2              OS_EXIT_CRITICAL();
*** ERROR C202 IN LINE 245 OF ..\OS\OS_CORE.C: 'EA': undefined identifier
 246   2          }
 247   1      }
 248          
 249          /*********************************************************************************************************
 250          ** 函数名称: OSIntExit
 251          ** 功能描述: 中断退出处理函数,在此进行中断后的任务切换
 252          ** 输 入: 无
 253          ** 输 出: 无
 254          ** 全局变量: OSIntNesting,OSNextTaskID
 255          ** 调用模块: OSIntCtxSw
 256          **
 257          ** 作 者: 陈明计
 258          ** 日 期: 2002年6月20日
 259          **-------------------------------------------------------------------------------------------------------
 260          ** 修改人: 陈明计
 261          ** 日 期: 2002年9月1日
 262          **-------------------------------------------------------------------------------------------------------
 263          ** 修改人: 陈明计
 264          ** 日 期: 2002年9月4日
 265          **------------------------------------------------------------------------------------------------------
 266          ** 修改人: 陈明计
 267          ** 日 期: 2002年10月19日
 268          **------------------------------------------------------------------------------------------------------
 269          ** 修改人: 陈明计
 270          ** 日 期: 2002年12月2日
 271          **------------------------------------------------------------------------------------------------------
 272          ** 修改人: 陈明计
 273          ** 日 期: 2002年12月30日
 274          **------------------------------------------------------------------------------------------------------
 275          ** 修改人:
 276          ** 日 期:
 277          **------------------------------------------------------------------------------------------------------
 278          ********************************************************************************************************/
 279                  void OSIntExit(void)
 280          
 281          {
 282   1          uint8 temp;
 283   1      
 284   1          OS_ENTER_CRITICAL();
*** ERROR C202 IN LINE 284 OF ..\OS\OS_CORE.C: 'EA': undefined identifier
 285   1                      /* 中断嵌套处理 */
 286   1      #if EN_OS_INT_ENTER > 0
 287   1          if (OSIntNesting > 0)
 288   1          {
 289   2              OSIntNesting--;
 290   2          }
 291   1          if (OSIntNesting == 0)
 292   1          {
 293   2      #endif
 294   2              
C51 COMPILER V7.01  OS_CORE                                                                03/06/2003 10:20:02 PAGE 6   

 295   2              Os_Enter_Sum = 0;               /* 因为在中断中,所以关中断计数器为0 */
 296   2      #if OS_MAX_TASKS < 9
                              /* 查找处于就绪状态的任务中优先级最高的任务 */
                      temp = OSTaskRuning;
                      for (OSNextTaskID = 0; OSNextTaskID < OS_MAX_TASKS; OSNextTaskID++)
                      {
                          if ((temp & 0x01) != 0)
                          {
                              break;
                          }
                          temp = temp >> 1;
                      }
                      OSIntCtxSw();                   /* 进行任务调度 */
              #else
 309   2                      /* 查找处于就绪状态的任务中优先级最高的任务 */
 310   2              temp = OSTaskRuning % 256;
 311   2              for (OSNextTaskID = 0; OSNextTaskID < 8; OSNextTaskID++)
 312   2              {
 313   3                  if ((temp & 0x01) != 0)
 314   3                  {
 315   4                      goto TaskSw;
 316   4                  }
 317   3                  temp = temp >> 1;
 318   3              }
 319   2      
 320   2              temp = OSTaskRuning / 256;
 321   2              for (; OSNextTaskID < OS_MAX_TASKS; OSNextTaskID++)
 322   2              {
 323   3                  if ((temp & 0x01) != 0)
 324   3                  {
 325   4                      break;
 326   4                  }
 327   3                  temp = temp >> 1;
 328   3              }
 329   2      TaskSw:
 330   2              OSIntCtxSw();                   /* 进行任务调度 */
 331   2      #endif
 332   2      
 333   2      #if EN_OS_INT_ENTER >0
 334   2          }
 335   1      #endif
 336   1          OS_EXIT_CRITICAL();
*** ERROR C202 IN LINE 336 OF ..\OS\OS_CORE.C: 'EA': undefined identifier
 337   1      }
 338          
 339          /*********************************************************************************************************
 340          ** 函数名称: OSSched
 341          ** 功能描述: 非中断的任务切换函数
 342          ** 输 入: 无
 343          ** 输 出: 无
 344          ** 全局变量: OSIntNesting,OSNextTaskID
 345          ** 调用模块: OS_TASK_SW
 346          **
 347          ** 作 者: 陈明计
 348          ** 日 期: 2002年6月20日
 349          **-------------------------------------------------------------------------------------------------------
 350          ** 修改人: 陈明计
 351          ** 日 期: 2002年9月1日
 352          **-------------------------------------------------------------------------------------------------------
 353          ** 修改人: 陈明计
 354          ** 日 期: 2002年9月4日
 355          **------------------------------------------------------------------------------------------------------
C51 COMPILER V7.01  OS_CORE                                                                03/06/2003 10:20:02 PAGE 7   

 356          ** 修改人: 陈明计
 357          ** 日 期: 2002年10月19日
 358          **------------------------------------------------------------------------------------------------------
 359          ** 修改人: 陈明计
 360          ** 日 期: 2002年12月2日
 361          **------------------------------------------------------------------------------------------------------

⌨️ 快捷键说明

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