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

📄 spos.h

📁 51单片机上可以使用的操作系统
💻 H
字号:
/******************************************
** Mini OS 1.5.0 head file               **
** Author :Taylor Wang                   **
** Date   :2003/1/22                     **
*******************************************/
#ifndef	__SPOS_H__
#define	__SPOS_H__

#include "sposconfig.h"
#include "sysstruct.h"
#include "sposbody.h"
//define OS err value
#define OS_NO_ERR					0			//no err
#define OS_IN_ISR					-1
#define OS_TIME_OUT					-2
//Init------------------------------------------
#define OS_OVER_MAX					-10
#define OS_UNDER_ONE				-11
// Start
#define	OS_NO_TASK					-10
//Task----------------------------------------------
#define OS_PRIO_INVALID				-5
#define OS_PRIO_EXIST				-6
#define OS_PRIO_NULL				-7
// TaskCreate
#define OS_NO_TCB					-10
// TaskResume
#define OS_RESUME_SELF				-10
#define OS_NO_SUSPEND				-11
// time resume
#define OS_NO_TIMEDLY				-10
//Event------------------------------------------
#define OS_PEVENT_NULL				-5
#define OS_ECB_TYYPE_ERR			-6
// MboxPost
#define OS_MBOX_FULL				-10
// Qpost and Qpost Front
#define OS_QUEUE_FULL				-10
// memory----------------------------------------
#define	OS_MEM_HANDLE_NULL			-5

#define	OS_MEM_INV_ADDR				-10
#define	OS_MEM_INV_BLKS				-11
#define	OS_MEM_INV_SIZE				-12
#define	OS_MEM_NOMCB				-13
// memory put
#define	OS_MEM_PBLK_NULL			-11
//Set vector-------------------------------------
#define		OS_NO_IFT				-10

// API function 
// System initialize
extern int SpSInit(void);
extern int SpSStart(void);
// Task Api
extern void SpSSchedLock(void);
extern void SpSSchedUnLock(void);
extern int SpSTaskCreate(pTask function,void *pParameter,void *pStackTop,int iPrio);
extern int SpSTaskExit(void);
extern int SpSTaskDel(unsigned int iPrio);
extern int SpSTaskResume(int iPrio);
extern int SpSTaskSuspend(int iPrio);
extern void SpSTimeDly(unsigned int iTimeCount);
extern int SpSTimeDlyResume(int iPrio);
extern unsigned long int SpSGetTickCount(void);
extern int SpSGetPri(void);
// Event api
//semaphore
extern HEvent SpSSemCreate(unsigned int iValue);
extern int SpSSemPend(HEvent hEvent,unsigned int iTimeOut);
extern int SpSSemPost(HEvent hEvent);
extern int SpSSemAccept(HEvent hEvent);
//Mailbox
extern HEvent SpSMboxCreate(void* pMail);
extern void* SpSMboxPend(HEvent hEvent,unsigned int iTimeOut,int* err);
extern int SpSMboxPost(HEvent hEvent,void* pMail);
extern void* SpSMboxAccept(HEvent hEvent);
//Queue
extern HEvent SpSQCreate(void* pStart,unsigned int iSize);
extern void* SpSQPend(HEvent hEvent,unsigned int iTimeOut,int* err);
extern int SpSQPost(HEvent hEvent,void* pMsg);
extern int SpSQPostFront(HEvent hEvent,void* pMsg);
extern void* SpSQAccept(HEvent hEvent);

extern void SpSTimeTick(void);
//mm
extern HMem SpSMemCreate(void* pStart,unsigned int iBlock,unsigned int iSize,int *err);
extern void* SpSMemGet(HMem hMem);
extern void* SpSMemGetWait(HMem hMem,unsigned int iTimeOut,int *err);
extern int SpSMemPut(HMem hMem,void* pBlk);
//other
extern int SpSVersion(void);
//System macro define
#define SpFBreak()	\
	__asm__("break")
	
//Automatic test function prototype and macro
#ifdef _DEBUG
#include "SpTPErr.h"
extern int SpTPTaskCreate(pTask function,void *pParameter,void *pStackTop,int iPrio);
extern int SpTPTaskExit(void);
extern int SpTPTaskDel(unsigned int iPrio);
extern int SpTPTaskResume(int iPrio);
extern int SpTPTaskSuspend(int iPrio);
extern void SpTPTimeDly(unsigned int Time);
extern int SpTPTimeDlyResume(int iPrio);

extern int SpTPSemPend (HEvent hEvent, unsigned int Time);
extern int SpTPSemPost (HEvent hEvent);
extern void* SpTPMboxPend (HEvent hEvent,unsigned int Time,int* err);
extern int SpTPMboxPost(HEvent hEvent,void* pMail);
extern void* SpTPQPend(HEvent hEvent,unsigned int Time,int* err);
extern int SpTPQPost(HEvent hEvent,void* pMsg);
extern int SpTPQPostFront(HEvent hEvent,void* pMsg);
extern void* SpTPMemGetWait(HMem hMem,unsigned int Time,int *err);
extern int SpTPMemPut(HMem hMem,void* pBlk);
extern void SpSCheckStack(void* top,void* bottom);
#define SpSTaskCreate		SpTPTaskCreate
#define SpSTaskExit			SpTPTaskExit
#define SpSTaskDel			SpTPTaskDel
#define SpSTaskResume		SpTPTaskResume
#define SpSTaskSuspend		SpTPTaskSuspend
#define SpSTimeDly			SpTPTimeDly
#define SpSTimeDlyResume	SpTPSTimeDlyResume

#define SpSSemPend			SpTPSemPend
#define SpSSemPost			SpTPSemPost
#define SpSMboxPend			SpTPMboxPend
#define SpSMboxPost 		SpTPMboxPost
#define SpSQPend			SpTPQPend
#define SpSQPost			SpTPQPost
#define SpSQPostFront		SpTPQPostFront
#define SpSMemGetWait		SpTPMemGetWait
#define SpSMemPut			SpTPMemPut
#else
#define SpSCheckStack(top,bottom)	{}
#endif
// _DEBUG endif
#endif
//

⌨️ 快捷键说明

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