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

📄 os_cpu_c.lst

📁 Small RTOS 下SJA1000驱动程序的编写。主要介绍了在实时操作系统Small RTOS下
💻 LST
📖 第 1 页 / 共 2 页
字号:
 147                  OSTaskID = OSNextTaskID;        
 148                  SP--;
 149              }
 150              LoadCtx();
 151              LoadCtx();
 152          }
 153          */
 154          
 155          /*********************************************************************************************************
 156          ** 函数名称: OSIdle
 157          ** 功能描述: 优先级最低的任务
 158          ** 输 入: 无
 159          ** 输 出 : 无
 160          ** 全局变量: 无
 161          ** 调用模块: 无
 162          ** 
 163          ** 作 者: 陈明计
 164          ** 日 期: 2002年12月2日
 165          **-------------------------------------------------------------------------------------------------------
 166          ** 修改人:
 167          ** 日 期:
 168          **-------------------------------------------------------------------------------------------------------
 169          ********************************************************************************************************/
 170          
 171          void OSIdle(void)
 172          {
 173              while(1)
 174              {
C51 COMPILER V7.01  OS_CPU_C                                                               03/06/2003 10:20:05 PAGE 4   

 175                  PCON = PCON | 0x01;                     /* CPU进入休眠状态 */
 176              }
 177          }
 178          
 179          /*********************************************************************************************************
 180          ** 函数名称: OSStart
 181          ** 功能描述: Small RTOS 51初始化函数,调用此函数后多任务开始运行,首先执ID为0的任务
 182          ** 输 入: 无
 183          ** 输 出 : 无
 184          ** 全局变量: OSTsakStackBotton,SP
 185          ** 调用模块: 无
 186          ** 
 187          ** 作 者: 陈明计
 188          ** 日 期: 2002年2月22日
 189          **-------------------------------------------------------------------------------------------------------
 190          ** 修改人: 陈明计
 191          ** 日 期: 2002年12月2日
 192          **-------------------------------------------------------------------------------------------------------
 193          ** 修改人: 陈明计
 194          ** 日 期: 2002年12月30日
 195          **-------------------------------------------------------------------------------------------------------
 196          ** 修改人:
 197          ** 日 期:
 198          **-------------------------------------------------------------------------------------------------------
 199          ********************************************************************************************************/
 200          void OSStart(void)
 201          {
 202              uint8 idata *cp;
 203              uint8 i;
 204              
 205              cp = STACK;
 206              
 207              OSTsakStackBotton[0] = STACK;
 208              OSTsakStackBotton[OS_MAX_TASKS + 1] = (uint8 idata *)(IDATA_RAM_SIZE % 256);
 209              
 210              /* 初始化优先级最高的任务堆栈,使返回地址为任务开始地址 */
 211              *cp++ = ((uint16)(TaskFuction[0])) % 256;
 212              SP = (uint8) cp;
 213              *cp = ((uint16)(TaskFuction[0])) / 256;
 214          
 215              /* 初始化优先级最低的任务堆栈 */
 216              cp = (uint8 idata *)(IDATA_RAM_SIZE - 1) ;
 217              *cp-- = 0;
 218              *cp-- =  ((uint16)(OSIdle)) / 256;
 219              OSTsakStackBotton[OS_MAX_TASKS] = cp;
 220              *cp-- =  ((uint16)(OSIdle)) % 256;
 221              
 222              /* 初始化其它优先级的任务堆栈 */
 223              for(i = OS_MAX_TASKS - 1; i > 0; i--)
 224              {
 225                  *cp-- = 0;
 226                  *cp-- =  ((uint16)(TaskFuction[i])) / 256;
 227                  OSTsakStackBotton[i] = cp;
 228                  *cp-- =  ((uint16)(TaskFuction[i])) % 256;
 229              }
 230              /* 允许中断 */
 231              Os_Enter_Sum = 1;
 232              OS_EXIT_CRITICAL();
 233              /* 函数返回优先级最高的任务 */
 234          }
 235          
 236          /*********************************************************************************************************
C51 COMPILER V7.01  OS_CPU_C                                                               03/06/2003 10:20:05 PAGE 5   

 237          ** 函数名称: OSTickISR
 238          ** 功能描述: 系统时钟中断服务函数
 239          ** 输 入: 无
 240          ** 输 出 : 无
 241          ** 全局变量: 无
 242          ** 调用模块: OS_IBT_ENTER,(UserTickTimer),OSTimeTick,OSIntExit
 243          ** 
 244          ** 作 者: 陈明计
 245          ** 日 期: 2002年2月22日
 246          **-------------------------------------------------------------------------------------------------------
 247          ** 修改人: 陈明计
 248          ** 日 期: 2002年10月23日
 249          **-------------------------------------------------------------------------------------------------------
 250          ** 修改人:
 251          ** 日 期:
 252          **-------------------------------------------------------------------------------------------------------
 253          ********************************************************************************************************/
 254          #if EN_OS_INT_ENTER >0 
*** WARNING C322 IN LINE 254 OF ..\KEILC51\OS_CPU_C.C: unknown identifier
              #pragma disable                                        /* 除非最高优先级中断,否则,必须加上这一句        
             -         */
              #endif
 257                  void OSTickISR(void) interrupt OS_TIME_ISR
 258          
 259          {
 260          #if TICK_TIMER_SHARING >1 
*** WARNING C322 IN LINE 260 OF ..\KEILC51\OS_CPU_C.C: unknown identifier
                  static uint8 TickSum = 0;
              #endif
 263          
 264          #if EN_USER_TICK_TIMER > 0 
*** WARNING C322 IN LINE 264 OF ..\KEILC51\OS_CPU_C.C: unknown identifier
                  UserTickTimer();                                    /* 用户函数                                       
             -          */
              #endif
 267          
 268          #if TICK_TIMER_SHARING >1 
*** WARNING C322 IN LINE 268 OF ..\KEILC51\OS_CPU_C.C: unknown identifier
                  TickSum = (TickSum + 1) % TICK_TIMER_SHARING;
                  if (TickSum != 0)
                  {
                      return;
                  }
              #endif
 275          
 276          #if EN_OS_INT_ENTER > 0 
*** WARNING C322 IN LINE 276 OF ..\KEILC51\OS_CPU_C.C: unknown identifier
                  OS_INT_ENTER();                                     /* 中断开始处理                                   
             - */
              #endif
 279              
 280          
 281          #if EN_TIMER_SHARING > 0
*** WARNING C322 IN LINE 281 OF ..\KEILC51\OS_CPU_C.C: unknown identifier
                  OSTimeTick();                                       /* 调用系统时钟处理函数                           
             - */
              #else
 284              OSIntSendSignal(TIME_ISR_TASK_ID);                  /* 唤醒ID为TIME_ISR_TASK_ID的任务                 
             -*/
 285          #endif
 286              
 287              OSIntExit();                                        /* 中断结束处理                                   
C51 COMPILER V7.01  OS_CPU_C                                                               03/06/2003 10:20:05 PAGE 6   

             -          */
 288          }

C51 COMPILATION COMPLETE.  8 WARNING(S),  2 ERROR(S)

⌨️ 快捷键说明

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