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

📄 os.h

📁 基本STC4052写的一个小的OS, 完成了任务调度功能,及堆栈空间切换, 及中断处理
💻 H
字号:
//////////////////////////////////////////////////////////////////
//                          
//      Copyright (c) 2006-2010 walnutcy 
//      All Right Reserved.       
//                                 
//      $Author    walnutcy           
//      $Email     walnutcy@163.com   
//      $Version   v1.0        
//      $FileName        
//      $Since       
//      $Log     
//                    
//      DESCRIPTION      
//                      
//	    History:      
//	    <author>          <time>     <version >    <desc>     
//      walnutcy       2006-11-22      0.1          建立
//////////////////////////////////////////////////////////////////

#ifndef _OS_H_
#define _OS_H_

#ifdef __cplusplus
extern "C" {
#endif

#include "includes.h"

////////////OS状态
#define OS_TASK_NULL		0
#define OS_TASK_RDY			1
#define OS_TASK_WAIT		2
#define OS_TASK_RUN			3
#define OS_TASK_SUSPEND		4
//////////
#define OS_TASK_MAX_NUM		4  //(must < 17)
typedef struct 
{
	U8 sp;
	PFUNPROC fun;	
	U8 delay;
	unsigned prio	:4 ;
	unsigned state	:4 ;

}OS_TCB;
typedef struct 
{
	U16 osPrio;
	OS_TCB	tcb[OS_TASK_MAX_NUM];
	U8 taskNum;
	U8 currTask;
//	U8 intLevel;
}OS_WALNUT;
extern OS_WALNUT gOs;
extern U8 gOsIntLevel;
extern BOOL gOsShedLock;
extern BOOL gOsMsgIntShed;

#define OsShedLOCK()	(gOsShedLock=1)
#define OsShedUnLOCK()	(gOsShedLock=0)
//OS的优先级为:0至 (OS_TASK_MAX_NUM-1)
//			   0级最高
//每个任务占用osPrio中对应的位置

#define OsCurrId()  (gOs.currTask)

#define EnterCritical()	(EA=0)
#define ExitCritical()	(EA=1)

////////////////////////////////////
/////配置OS:
#define OS_DELAY
#define OS_KILL 
////////////////////////////////////
extern BOOL isNeedTaskSW;


void OsInit (void) REENTRANT ;
CBOOL OsTaskCreate (U8 prio,PFUNPROC fun,U8 stack)	REENTRANT ;
void OsWaitMsg (void) REENTRANT	 ; 
CBOOL OsSendMsg (U8 msg)  REENTRANT;
void OsStart (void)	REENTRANT;
void OsTaskSwitch (void) REENTRANT;

#ifdef OS_KILL
CBOOL OsTaskKill (U8 prio)	REENTRANT;
#endif

#ifdef OS_DELAY
void OsDealDelay (void)	REENTRANT;
void OsDelay (U8 delay)	REENTRANT;
#endif


void OSTaskSW (void) REENTRANT;



#ifdef __cplusplus
}
#endif	
#endif

⌨️ 快捷键说明

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