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

📄 schinit.c

📁 这是一个合作式内核的实时系统,开发平台式KEIl51.
💻 C
字号:
#include "SCHInit.h"

//数据区
extern sTask SCH_tasks_G[SCH_MAX_TASKS];
extern tByte Error_code_G;

/*------------------------------------------------------------------*-

  SCH_Init_T2()
系统调度器初始化

-*------------------------------------------------------------------*/
void SCH_Init_T2(void) 
   {
   tByte i;

   for (i = 0; i < SCH_MAX_TASKS; i++)  //把任务送入调度器队列
      {
      SCH_Delete_Task(i);
      }
   Error_code_G = 0;                   //系统报错复位  


   T2CON = 0x04;                           //系统时钟基准设置,间隔1ms
   T2MOD = 0x00;   
   TH2    = 0xFC;
   RCAP2H = 0xFC;  
   TL2    = 0x18; 
   RCAP2L = 0x18;  
   
   ET2   = 1;  
  
   }


/*------------------------------------------------------------------*-

  SCH_Start()
 系统启动

-*------------------------------------------------------------------*/
void SCH_Start(void) 
   {
 EA = 1;
 TR2   = 1;  
   }


/*------------------------------------------------------------------*-

  SCH_Update()
  调度器任务队列处理函数

-*------------------------------------------------------------------*/
void SCH_Update(void) interrupt INTERRUPT_Timer_2_Overflow  
   {
   tByte Index;

   TF2 = 0; 
   for (Index = 0; Index < SCH_MAX_TASKS; Index++)
      {
      if (SCH_tasks_G[Index].pTask)
         {
         if (SCH_tasks_G[Index].Delay == 0)
            {
            SCH_tasks_G[Index].RunMe += 1;  

            if (SCH_tasks_G[Index].Period)
               {
               SCH_tasks_G[Index].Delay = SCH_tasks_G[Index].Period;
               }
            }
         else
            {
            SCH_tasks_G[Index].Delay -= 1;
            }
         }         
      }
   }  

⌨️ 快捷键说明

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