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