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

📄 global.h.svn-base

📁 我们自己开发的一个OSEK操作系统!不知道可不可以?
💻 SVN-BASE
字号:
#ifndef __OS_GLOBAL_H__
#define __OS_GLOBAL_H__


#include "API_interrupt.h"
#include "OS_CPU.h"
#include "OS_TCB.h"
#include "resource.h"
/*用户可能配置的宏*/
#define SCHEDULE                      2
#define CC                            4

#define MAXTIMES                      10
#define OS_LOWEST_PRIO                63 /* Defines the lowest priority that can be assigned ...         */
#define OS_MAX_TASKS                  63
#define RCBNum                        4


/*系统内部定义的宏*/

#define OS_N_SYS_TASKS                1
#define OS_IDLE_PRIO                  63
#define OS_STK_GROWTH                 1
#define OS_HIGHEST_PRIO               0
#define OS_TASK_IDLE_PRIO             (OS_LOWEST_PRIO)            /* IDLE      task priority                     */
#define OS_RDY_TBL_SIZE               ((OS_LOWEST_PRIO) / 8 + 1)   /* Size of ready table  */ 
#define OS_TASK_IDLE_STK_SIZE         512



/*系统内部定义的若干变量*/
INT8U             OSPrioCur;                /* Priority of current task                        */
INT8U             OSPrioHighRdy;            /* Priority of highest priority task               */
INT8U             OSIntNesting;       
INT8U             OSRdyGrp;                        /* Ready list group                         */
INT8U             OSRdyTbl[OS_RDY_TBL_SIZE];       /* Table of tasks which are ready to run    */
BOOLEAN           OSRunning;                       /* Flag indicating that kernel is running   */
INT16U            OSTaskCtr;                       /* Number of tasks created                  */
volatile  INT32U  OSIdleCtr;                                 /* Idle counter                   */
OS_STK            OSTaskIdleStk[OS_TASK_IDLE_STK_SIZE];      /* Idle task stack                */
INT16U            OSCtxSwCtr;



INT16U            AppTask0Stk[512];
INT16U            AppTask1Stk[512];
INT16U            AppTask2Stk[512];
INT16U            AppTask3Stk[512];
INT16U            AppTask4Stk[512];
INT16U            AppTask5Stk[512];
INT16U            AppTask6Stk[512];
INT16U            AppTask7Stk[512];
INT16U            AppTask8Stk[512];
INT16U            AppTask9Stk[512];
INT16U            AppTask10Stk[512];
INT16U            AppTask11Stk[512];
INT16U            AppTask12Stk[512];
INT16U            AppTask13Stk[512];
INT16U            AppTask14Stk[512];
INT16U            AppTask15Stk[512];
INT16U            AppTask16Stk[512];
INT16U            AppTask17Stk[512];
INT16U            AppTask18Stk[512];
INT16U            AppTask19Stk[512];
INT16U            AppTask20Stk[512];
INT16U            AppTask21Stk[512];
INT16U            AppTask22Stk[512];
INT16U            AppTask23Stk[512];
INT16U            AppTask24Stk[512];
INT16U            AppTask25Stk[512];
INT16U            AppTask26Stk[512];
INT16U            AppTask27Stk[512];
INT16U            AppTask28Stk[512];
INT16U            AppTask29Stk[512];
INT16U            AppTask30Stk[512];
INT16U            AppTask31Stk[512];
INT16U            AppTask32Stk[512];
INT16U            AppTask33Stk[512];
INT16U            AppTask34Stk[512];
INT16U            AppTask35Stk[512];
INT16U            AppTask36Stk[512];
INT16U            AppTask37Stk[512];
INT16U            AppTask38Stk[512];
INT16U            AppTask39Stk[512];
INT16U            AppTask40Stk[512];
INT16U            AppTask41Stk[512];
INT16U            AppTask42Stk[512];
INT16U            AppTask43Stk[512];
INT16U            AppTask44Stk[512];
INT16U            AppTask45Stk[512];
INT16U            AppTask46Stk[512];
INT16U            AppTask47Stk[512];
INT16U            AppTask48Stk[512];
INT16U            AppTask49Stk[512];
INT16U            AppTask50Stk[512];
INT16U            AppTask51Stk[512];
INT16U            AppTask52Stk[512];
INT16U            AppTask53Stk[512];
INT16U            AppTask54Stk[512];
INT16U            AppTask55Stk[512];
INT16U            AppTask56Stk[512];
INT16U            AppTask57Stk[512];
INT16U            AppTask58Stk[512];
INT16U            AppTask59Stk[512];
INT16U            AppTask60Stk[512];
INT16U            AppTask61Stk[512];
INT16U            AppTask62Stk[512];
INT16U            AppTask63Stk[512];






 OS_TCB           *OSTCBCur;                        /* Pointer to currently running TCB         */
 OS_TCB           *OSTCBFreeList;                   /* Pointer to list of free TCBs             */
 OS_TCB           *OSTCBHighRdy;                    /* Pointer to highest priority TCB R-to-R   */
 OS_TCB           *OSTCBList;                       /* Pointer to doubly linked list of TCBs    */
//OS_TCB           *OSTCBPrioTbl[OS_LOWEST_PRIO + 1];/* Table of pointers to created TCBs        */
 OS_TCB            OSTCBTbl[OS_MAX_TASKS + OS_N_SYS_TASKS];   /* Table of TCBs                  */
 OS_TCB           *OSTCBidTbl[OS_MAX_TASKS + OS_N_SYS_TASKS ];
 RCB              *RCBArray;      

/*与OSEK有关,或者系统出错时定义的宏*/

#define  TRUE                          1
#define  FALSE                         0


#define  BT                            0
#define  ET                            1


#define NONPREEMPT                     0
#define PREEMPT                        1
#define MIXPREEMPT                     2


#define E_OK                           10
#define E_OS_ID                        20
#define E_OS_LIMIT                     20
#define E_OS_CALLEVEL                  20
#define E_OS_RESOURCE                  20
#define E_OS_STATE                     20
#define E_OS_ACCESS                    20
#define OS_PRIO_INVALID                20
#define OS_NO_ERR                      20
#define OS_ERR_NONE                    20
#define OS_ERR_PRIO_EXIST		       20
#define OS_ERR_PRIO_ID_EXIST           20
#define OS_ERR_TASK_NO_MORE_TCB        20
#define OS_ERR_ID_EXIST                20
#define INVALID_TASK                   20
#define TASKIDLE                       20
#define NO_TASK                        (void *)0
#define OS_TASK_IDLE_ID                20 
#define OS_ERR_PRIO_INVALID            20
#define OS_ERR_PRIO                    20

#define E_OS_NOFUNC                    20
#define ready                          1
#define running                        2
#define waitting                       3
#define suspended                      4

#define BCC1                           1
#define BCC2                           2
#define ECC1                           3
#define ECC2                           4


#if (CC==BCC2)||(CC==ECC2)
 INT8U           atvtimes[OS_MAX_TASKS + OS_N_SYS_TASKS];
#endif

typedef struct  rdyqueue
{
  OS_TCB *front,*rear;
} RdyQueue;

#if (CC==BCC1)||(CC==ECC1)
 OS_TCB *OSTCBPrioTbl[OS_LOWEST_PRIO + 1];
#else
 RdyQueue OSTCBPrioTbl[OS_LOWEST_PRIO + 1];
#endif

void  OSInit(void);
void  OS_InitRdyList (void);
void  OS_MemClr (INT8U *pdest, INT16U size);
void  OS_InitTCBList (void);
INT8U  OS_TCBInit (OS_STK *ptos,INT8U prio, INT8U id, INT32U stk_size, INT8U taskclass,INT8U  autoact,INT8U  schedpcy);
void  OS_InitTaskIdle (void);
void EnQueue(RdyQueue *Q,OS_TCB *x);
OS_TCB *DeQueue(RdyQueue *Q);
INT8U  OSTaskCreate (void (*task)(void *p_arg), void *p_arg, OS_STK *ptos, INT32U stk_size, INT8U prio, INT8U id, INT8U taskclass,INT8U autoact, INT8U schedpcy);
OS_STK *OSTaskStkInit(void (*task)(void *pd), void *p_arg, OS_STK *ptos);
void  OSStart (void);
INT8U  OSTaskChangePrio (INT8U id,INT8U oldprio, INT8U newprio);
void  OS_SchedNew (void);
void  OS_Sched (void);
void  TaskIdle (void);
void  Wait (void);
void release(INT8U id);
INT8U activatetask(INT8U id);
INT8U terminatetask(void);
INT8U chaintask(INT8U id);
void   schedule (void);
INT8U GetTaskId (void);
INT8U GetTaskState(INT8U id);

#endif

⌨️ 快捷键说明

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