📄 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 + -