os.h

来自「PIC单片机的操作系统。picc18编译过」· C头文件 代码 · 共 70 行

H
70
字号
//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 + =
减小字号Ctrl + -
显示快捷键?