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

📄 ucos.h

📁 uCOSII code for Coldfire processor
💻 H
字号:
/*
***********************************************************
*                         UCOS.H
*                   SYSTEM DECLARATIONS
***********************************************************
*/
#define OS_LO_PRIO          63 /*IDLE task priority      */

                               /*TASK STATUS             */
#define OS_STAT_RDY       0x00 /*Ready to run            */

#define OS_STAT_MBOX      0x01 /*Pending on mailbox      */
#define OS_STAT_SEM       0x02 /*Pending on semaphore    */
#define OS_STAT_Q         0x04 /*Pending on queue        */
#define OS_STAT_RES1      0x08 /*Reserved                */
#define OS_STAT_RES2      0x10 /*Reserved                */
#define OS_STAT_RES3      0x20 /*Reserved                */
#define OS_STAT_RES4      0x40 /*Reserved                */
#define OS_STAT_RES5      0x80 /*Reserved                */

#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_SEM_ERR         50
#define  OS_SEM_OVF         51

/*
***********************************************************
*         uCOS TASK CONTROL BLOCK DATA STRUCTURE
***********************************************************
*/
typedef struct os_tcb {
    void          *OSTCBStkPtr;
    UBYTE          OSTCBStat;
    UBYTE          OSTCBPrio;
    UWORD          OSTCBDly;
    struct os_tcb *OSTCBNext;
    struct os_tcb *OSTCBPrev;
} OS_TCB;

/*
***********************************************************
*                SEMAPHORE DATA STRUCTURE
***********************************************************
*/
typedef struct os_sem {
    WORD   OSSemCnt;
    UBYTE  OSSemGrp;
    UBYTE  OSSemTbl[8];
} OS_SEM;

/*
***********************************************************
*                    MAILBOX DATA STRUCTURE
***********************************************************
*/
typedef struct os_mbox {
    void  *OSMboxMsg;
    UBYTE  OSMboxGrp;
    UBYTE  OSMboxTbl[8];
} OS_MBOX;

/*
***********************************************************
*                      QUEUE DATA STRUCTURE
***********************************************************
*/
typedef struct os_q {
    void **OSQStart;
    void **OSQEnd;
    void **OSQIn;
    void **OSQOut;
    UBYTE  OSQSize;
    UBYTE  OSQEntries;
    UBYTE  OSQGrp;
    UBYTE  OSQTbl[8];
} OS_Q;

/*
***********************************************************
*                 uCOS GLOBAL VARIABLES
***********************************************************
*/
extern BOOLEAN  OSRunning;
extern OS_TCB  *OSTCBCur;
extern OS_TCB  *OSTCBHighRdy;
extern UBYTE    OSRdyGrp;
extern UBYTE    OSRdyTbl[];
extern OS_TCB  *OSTCBPrioTbl[];
extern OS_TCB   OSTCBTbl[];
extern OS_TCB  *OSTCBList;
extern UBYTE    OSLockNesting;
extern UBYTE    OSIntNesting;
extern OS_TCB  *OSTCBFreeList;
#ifndef UCOS_C                 //Required to stop GNU compiler complaining - DJF
  extern UBYTE    OSMapTbl[];
  extern UBYTE    OSUnMapTbl[];
#endif

/*
***********************************************************
*                 uCOS FUNCTION PROTOTYPES
***********************************************************
*/
void     OSInit(void *idle_stk, UBYTE maxtasks);
void     OSStart(void);
UBYTE    OSTaskCreate(void (far *task)(void *dptr), void  *data, void  *pstk, UBYTE  prio);
void     OSTimeDly(UWORD ticks);
void     OSTimeTick(void);
void     OSIntEnter(void);
void     OSIntExit(void);
void far OSCtxSw(void);
void     OSIntCtxSw(void);
void far OSTickISR(void);
void     OSStartHighRdy(void);
void     OSSched(void);
OS_TCB  *OSTCBGetFree(void);
UBYTE    OSChangePrio(UBYTE newp);
void     OSTaskDelete(void);
void     OSLock(void);
void     OSUnlock(void);
UBYTE    OSSemInit(OS_SEM *psem, WORD value);
UBYTE    OSSemPost(OS_SEM *psem);
UBYTE    OSSemPend(OS_SEM *psem, UWORD timeout);
UBYTE    OSMboxInit(OS_MBOX *pmbox, void *msg);
UBYTE    OSMboxPost(OS_MBOX *pmbox, void *msg);
void    *OSMboxPend(OS_MBOX *pmbox, UWORD timeout, UBYTE *err);
UBYTE    OSQInit(OS_Q *pq, void **start, UBYTE size);
UBYTE    OSQPost(OS_Q *pq, void *msg);
void    *OSQPend(OS_Q *pq, UWORD timeout, UBYTE *err);
void     OSTCBPutFree(OS_TCB *ptcb);

⌨️ 快捷键说明

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