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

📄 os_backup.h

📁 uC/IP Release Notes These release notes for uC/IP are divided into the following sections
💻 H
字号:
/*
***************************************************************************************************
*                                            uC/OS                                                *
*                    Microcomputer Real-Time Multitasking Operating System                        *
*                    (c) Copyright 1992, Jean J. Labrosse, Plantation, FL                         *
*                                                                                                 *
*                                                                                                 *
* File: OS.H                                                                                    *
***************************************************************************************************
*/
#ifndef _OS_H_
#define _OS_H_

/*
***************************************************************************************************
*                                      uC/OS Configuration                                        *
***************************************************************************************************
*/
#define uCOS            0x80    /* interrupt vector assigned to uCOS */
#define OS_MAX_TASKS      20    /* Maximum number of tasks in your application */
#define OS_MAX_EVENTS     20    /* Maximum number of event control blocks in your application */
#define OS_MAX_QS          5    /* Maximum number of queue control blocks in your application */
#define OS_IDLE_TASK_STK_SIZE 1024 /* Idle task stack size (BYTEs) */

#undef BOOLEAN
#undef UBYTE
#undef BYTE
#undef UWORD
#undef WORD
#undef ULONG
#undef LONG
typedef unsigned char  BOOLEAN;
typedef unsigned char  UBYTE;        /* Unsigned  8 bit quantity */
//typedef   signed char  BYTE;         /* Signed    8 bit quantity */
typedef unsigned short UWORD;        /* Unsigned 16 bit quantity */
//typedef   signed short WORD;         /* Signed   16 bit quantity */
#define WORD signed short            /* Signed   16 bit quantity */
typedef unsigned long  ULONG;        /* Unsigned 32 bit quantity */
typedef   signed long  LONG;         /* Signed   32 bit quantity */

/*
***************************************************************************************************
*                                      uC/OS Error Codes                                          *
***************************************************************************************************
*/
#define OS_NO_ERR                0       /* ERROR CODES */
#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

/*
***************************************************************************************************
*                                      EVENT CONTROL BLOCK                                        *
***************************************************************************************************
*/
typedef struct os_event {
  UBYTE OSEventGrp;             /* Group corresponding to tasks waiting for event to occur */
  UBYTE OSEventTbl[8];          /* List of tasks waiting for event to occur */
  WORD  OSEventCnt;             /* Count of used when event is a semaphore */
  void* OSEventPtr;             /* Pointer to message or queue structure */
#ifdef WIN32
  unsigned long OSInterlock;
#endif
} OS_EVENT;


/*
***************************************************************************************************
*                                      uC/OS GLOBAL VARIABLES                                     *
***************************************************************************************************
*/
extern UWORD   OSCtxSwCtr;      /* Counter of number of context switches */
extern ULONG   OSIdleCtr;       /* Idle counter */
extern BOOLEAN OSRunning;       /* Flag indicating that kernel is running */

/*
***************************************************************************************************
*                                      uC/OS FUNCTION PROTOTYPES                                  *
***************************************************************************************************
*/
void      OSInit(void);
void      OSStart(void);
void      OSStartHighRdy(void);
void      OSSched(void);
void      OSSchedLock(void);
void      OSSchedUnlock(void);
UBYTE     OSTCBInit(UBYTE p, void* stk);

//static void FAR  OSTaskIdle(void *data);
//UBYTE     OSTaskCreate(void (FAR *task)(void *pd), void *pdata, void *pstk, UBYTE prio);

UBYTE     OSTaskCreate(void (*task)(void*), void* pdata, void* pstk, UBYTE prio);

UBYTE     OSTaskDel(UBYTE p);
UBYTE     OSTaskChangePrio(UBYTE oldp, UBYTE newp);

UBYTE     OSTaskSuspend(UBYTE prio);
UBYTE     OSTaskResume(UBYTE prio);

void      OSIntEnter(void);
void      OSIntExit(void);

void      OSIntCtxSw(void);
//void FAR  OSCtxSw(void);
void      OSCtxSw(void);

void      OSTimeDly(UWORD ticks);
void      OSTimeTick(void);
void      OSTimeSet(ULONG ticks);
ULONG     OSTimeGet(void);

OS_EVENT* OSSemCreate(WORD value);
UBYTE OSSemPost(OS_EVENT* pevent);
void OSSemPend(OS_EVENT* pevent, UWORD timeout, UBYTE* err);


#endif // _OS_H_

⌨️ 快捷键说明

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