📄 os.h
字号:
//os.h
#ifndef __OS_HEADER__
#define __OS_HEADER__
//
#define nop() asm("NOP")
#define clrwdt() asm("CLRWDT")
//
#define OS_TASKS 8 // 用户任务数量
// 最大系统消息
#define OS_EVENTS 6
#define osCommBuffSize 32
//
typedef struct{
unsigned osTaskState:4;
unsigned osTaskID:4;
unsigned int osTaskPtr; //保存任务的入口地址
unsigned int osTaskStackTop; //保存任务的堆栈顶
unsigned int osWaitTick; //任务延时时钟
} TaskCtrBlock;
//
typedef struct //信号邮箱
{
unsigned Type : 1; // 类型,0:独占,1:共享
unsigned Enable : 1; // 0:无效,1:有效
unsigned Others:6;
unsigned char FromTask; // 收信箱:产生事件的任务列表
unsigned char ToTask; // 发信箱:需要接收事件的任务
} MESG;
typedef struct{
unsigned char Door1;
unsigned char Door2;
unsigned char Door3;
unsigned char Door4;
}DefDoor;
//
#define osEnterOsFunction() GIEH=0
#define osExitOsFunction() GIEH=1
//
#define osTaskSta_Stop 0 // 任务停止
#define osTaskSta_Ready 1 // 任务就绪
#define osTaskSta_Delay 2 // 任务延时
#define osTaskSta_Waite 3 // 任务等待
//
#define osSch() TMR1IF=1;bOSSCH=1
#define DelayOsTicks(ticks) osDelay(ticks); osSch()
#define osResumeTask(TaskID) TCB[TaskID].osTaskState = osTaskSta_Ready;osSch()
#define osQuit() osExitTask();osSch()
#define osRunTask(TaskID) osResumeTask(TaskID)
//
extern TaskCtrBlock TCB[OS_TASKS+1];
extern MESG EVENT[OS_EVENTS];
extern bit bOSSCH ; // 任务调度申请,避免进入TMR中断处理
//
void osInit(void);
void osCreateTask(void *taskPtr, unsigned char TaskID);
void osDelay(unsigned int);
void osExitTask(void);
void osTaskIdle(void);
//
unsigned char OpenComm(unsigned char );
void CloseComm(void);
unsigned char osGetCommBuff(unsigned char bytes,unsigned char *ptr);
unsigned char osChkCommBuff(void);
unsigned char Wr45DB041(unsigned char *,unsigned char *,unsigned char );
unsigned char Rd45DB041(unsigned char *,unsigned char *,unsigned char );
#endif//__OS_HEADER__
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -