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

📄 ucos.h

📁 一个小型化的嵌入式实时操作系统源代码
💻 H
字号:
/* * File:	ucos.h * * uC/OS Real-time multitasking kernel for the MIPS processor. * * Created by Jean J. Labrosse.  * ARM port by Marco Graziano (marcog@crl.com). * MIPS port by Phil Bunce (pjb@carmel.com). * SPARClite port by Brad Denniston (bradd@vpeng.com) * */#ifndef _UCOS_H_#define _UCOS_H_#include "cpu.h"/*#define DIAG_ON		/* turn on diag messages */#ifndef DIAG_ON#define wrdiagc(x)#define wrdiags(x)#endif#ifdef LANGUAGE_C/* Unsigned integer */typedef unsigned int uint;/* Register type */typedef volatile unsigned int ureg; /* Unsigned characters */typedef unsigned char byte;/* Pointer to function with no arguments returning int */typedef int (*PFI)(void);/* Pointer to function with no arguments returning void */typedef void (*PFV)(void);/* Pointer to function with a pointer argument returning void */typedef void (*PTV)(void *);#endif/* * uC/OS configuration */#define	OS_MAX_TASKS	64	/* max number of tasks in an application */#define	OS_MAX_EVENTS	64	/* max number of events */#define	OS_MAX_QS	64	/* max number of queues */#define OS_LO_PRIO      63	/* lowest priority *//* * Error codes */#define	OS_NO_ERR		0#define	OS_TIMEOUT		10#define	OS_MBOX_FULL		20#define	OS_Q_FULL		30#define	OS_PRIO_EXIST		40#define	OS_PRIO_ERR		41#define	OS_SEM_ERR		50#define	OS_SEM_OVF		51#define	OS_TASK_DEL_ERR		60#define	OS_TASK_DEL_IDLE	61#define	OS_NO_MORE_TCB		70#ifdef LANGUAGE_C/* * Event control block. */typedef struct os_event {	uint	OSEventGrp;	uint	OSEventTbl[8];	int	OSEventCnt;	void	*OSEventPtr;} OS_EVENT;/* * Task control block. */typedef struct os_tcb {	void		*OSTCBStkPtr;	uint		OSTCBStat;	uint		OSTCBPrio;	uint		OSTCBDly;	uint		OSTCBX;	uint		OSTCBY;	uint		OSTCBBitX;	uint		OSTCBBitY;	OS_EVENT	*OSTCBEventPtr;	struct os_tcb	*OSTCBNext;	struct os_tcb	*OSTCBPrev;} OS_TCB;/* * Queue control block. */typedef struct os_q {	struct os_q	*OSQPtr;	void		**OSQStart;	void		**OSQEnd;	void		**OSQIn;	void		**OSQOut;	uint		OSQSize;	uint		OSQEntries;} OS_Q;/* * Function prototypes. */extern void	OSInit(void);		/* initialize uC/OS */extern void	OSStart(void);		/* start multitasking */ extern void	OSDisableInt(void);	/* disable IRQ and FIQ interrupts */extern void	OSEnableInt(void);	/* enable IRQ and FIQ interrupts */extern void	OSSchedLock(void);	/* prevent rescheduling */extern void	OSSchedUnlock(void);	/* allow rescheduling */extern int	OSTaskCreate(void(*)(void *), void *, void *, uint);extern int	OSTaskDel(uint);extern int	OSTaskChangePrio(uint, uint);extern uint    *BuildNewStack(uint *stk,PTV task,void *pdata);extern void	OSTimeDly(uint);	/* delay a task */extern void	OSTimeSet(uint);	/* set system time */extern uint	OSTimeGet(void);	/* get system time */extern void	OSTimeTick(void);	/* increment the system time */extern OS_EVENT	*OSSemCreate(int);			/* create a semaphore */extern uint	OSSemPost(OS_EVENT *);			/* signal semaphore */extern void	OSSemPend(OS_EVENT *, uint, uint *);	/* wait semaphore */extern OS_EVENT	*OSMboxCreate(void *);			/* create mailbox */extern uint	OSMboxPost(OS_EVENT *, void *);		/* post message */extern void	*OSMboxPend(OS_EVENT *, uint, uint *);	/* pend for message */extern OS_EVENT	*OSQCreate(void **, uint);		/* create a queue */extern uint	OSQPost(OS_EVENT *, void *);		/* post a message */extern void	*OSQPend(OS_EVENT *, uint, uint *);	/* pend for message *//* * Global variables. */extern  uint    OSCtxSwCtr;             /* context switches counter */extern  uint    OSIdleCtr;              /* idle counter */extern  uint    OSRunning;              /* kernel running flag */extern  OS_TCB  *OSTCBCur;              /* current running TCB pointer */extern  OS_TCB  *OSTCBHighRdy;          /* highest priority TCB ready to run */extern  OS_TCB  *OSTCBPrioTbl[];        /* table of pointers to created TCBs */extern	uint	OSIntNesting;			/* levels of interrupt nesting */ #endif /*  LANGUAGE_C *//* used in boolean fields */#define TRUE    0x1 #define FALSE   0x0/* disable interrupt mask */#define NOINT   0x03/* idle task stack size (words) */#define OS_IDLE_STK_SIZE         112      /* constants */#define	INT_MAX		0x7FFFFFFF/* task status */#define	OS_STAT_RDY	0	/* ready to run */#define	OS_STAT_SEM	1	/* suspended on semaphore */#define	OS_STAT_MBOX	2	/* suspended on mailbox */#define	OS_STAT_Q	3	/* suspended on queue */#define	ENTER_CRITICAL()	OSDisableInt() #define	EXIT_CRITICAL()		OSEnableInt() #endif /* _UCOS_H_ */

⌨️ 快捷键说明

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