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

📄 132.htm

📁 pcb设计资料初学者难得的入门资料包含工厂制作过程
💻 HTM
字号:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>CTerm非常精华下载</title>
</head>
<body bgcolor="#FFFFFF">
<table border="0" width="100%" cellspacing="0" cellpadding="0" height="577">
<tr><td width="32%" rowspan="3" height="123"><img src="DDl_back.jpg" width="300" height="129" alt="DDl_back.jpg"></td><td width="30%" background="DDl_back2.jpg" height="35"><p align="center"><a href="http://202.112.58.200"><font face="黑体"><big><big>Tsinghua</big></big></font></a></td></tr>
<tr>
<td width="68%" background="DDl_back2.jpg" height="44"><big><big><font face="黑体"><p align="center">         嵌入式系统                            (BM: turbolinux jacobw)          </font></big></big></td></tr>
<tr>
<td width="68%" height="44" bgcolor="#000000"><font face="黑体"><big><big><p   align="center"></big></big><a href="http://cterm.163.net"><img src="banner.gif" width="400" height="60" alt="banner.gif"border="0"></a></font></td>
</tr>
<tr><td width="100%" colspan="2" height="100" align="center" valign="top"><br><p align="center">[<a href="嵌入式系统.htm">回到开始</a>][<a href="62.htm">上一层</a>][<a href="133.htm">下一篇</a>]
<hr><p align="left"><small>发信人: sunno (民工★节网失败ing), 信区: Embedded <br>

标  题: 【源代码】ucos (head file) <br>

发信站: BBS 水木清华站 (Sat Apr 15 14:05:03 2000) <br>

  <br>

(本文转载自circuit精华区) <br>

  <br>

发信人: mot (快乐的Saxphone), 信区: Circuit <br>

标  题: ucos(head file) <br>

发信站: BBS 水木清华站 (Wed Sep 23 11:56:23 1998) <br>

/* <br>

**************************************************************************** <br>

****************************** <br>

*                                                 uC/OS <br>

*                                          The Real-Time Kernel <br>

*                                           SYSTEM DECLARATIONS <br>

* <br>

*                        (c) Copyright 1992-1995, Jean J. Labrosse, Plantati <br>

on, FL <br>

*                                           All Rights Reserved <br>

* <br>

*                                                  V1.08 <br>

* <br>

* File : UCOS.H <br>



* By   : Jean J. Labrosse <br>

**************************************************************************** <br>

****************************** <br>

*/ <br>

/* <br>

**************************************************************************** <br>

****************************** <br>

*                                          uC/OS CONFIGURATION <br>

**************************************************************************** <br>

****************************** <br>

*/ <br>

#define OS_FAR                  far    /* Define OS_FAR for the processor (i <br>

x86 CPUs)                  */ <br>

#define OS_STK_TYPE           UBYTE    /* Data type used for stack <br>

#define uCOS                   0x80    /* Interrupt vector assigned to uC/OS <br>

  <br>

#define OS_MAX_TASKS             63    /* Maximum number of tasks in your ap <br>

pliccation                  */ <br>

#define OS_MAX_EVENTS            20    /* Maximum number of event control bl <br>

ockss in your application   */ <br>

#define OS_MAX_QS                 5    /* Maximum number of queue control bl <br>

ockss in your application   */ <br>



#define OS_IDLE_TASK_STK_SIZE  1024    /* Idle task stack size (BYTEs) <br>

#define OS_IDLE_TASK_STK_TOP   1024    /* Index into idle task top of stack <br>

#define OS_TASK_CHANGE_PRIO_EN    1    /* Include code for OSTaskChangePrio( <br>

) <br>

#define OS_TASK_DEL_EN            1    /* Include code for OSTaskDel() <br>

#define OS_SEM_EN                 1    /* Include code for SEMAPHORES <br>

#define OS_MBOX_EN                1    /* Include code for MAILBOXES <br>

#define OS_Q_EN                   1    /* Include code for QUEUES <br>

#define OS_TASK_SUSPEND_EN        1    /* Include code for OSTaskSuspend() a <br>

nd OOSTaskResume()          */ <br>

/*$PAGE*/ <br>

/* <br>

**************************************************************************** <br>

****************************** <br>

*                                            MISCELLANEOUS <br>

**************************************************************************** <br>

****************************** <br>

*/ <br>

#ifdef  OS_GLOBALS <br>

#define OS_EXT <br>

#else <br>

#define OS_EXT  extern <br>



#endif <br>

#define OS_PRIO_SELF           0xFF    /* Indicate SELF priority <br>

/* <br>

**************************************************************************** <br>

****************************** <br>

*                                           uC/OS ERROR CODES <br>

**************************************************************************** <br>

****************************** <br>

*/ <br>

#define OS_NO_ERR                 0 <br>

#define OS_TIMEOUT               10 <br>

#define OS_TASK_NOT_EXIST        11 <br>

#define OS_MBOX_FULL             20 <br>

#define OS_MBOX_MSG_NOT_AVAIL    21 <br>

#define OS_Q_FULL                30 <br>

#define OS_Q_MSG_NOT_AVAIL       31 <br>

#define OS_PRIO_EXIST            40 <br>

#define OS_PRIO_ERR              41 <br>

#define OS_PRIO_INVALID          42 <br>

#define OS_SEM_ERR               50 <br>

#define OS_SEM_OVF               51 <br>

#define OS_SEM_NOT_AVAIL         52 <br>



#define OS_TASK_DEL_ERR          60 <br>

#define OS_TASK_DEL_IDLE         61 <br>

#define OS_TASK_DEL_REQ          62 <br>

#define OS_NO_MORE_TCB           70 <br>

#define OS_TIME_NOT_DLY          80 <br>

#define OS_TASK_SUSPEND_PRIO     90 <br>

#define OS_TASK_SUSPEND_IDLE     91 <br>

#define OS_TASK_RESUME_PRIO     100 <br>

#define OS_TASK_NOT_SUSPENDED   101 <br>

/*$PAGE*/ <br>

/* <br>

**************************************************************************** <br>

****************************** <br>

*                                          EVENT CONTROL BLOCK <br>

**************************************************************************** <br>

****************************** <br>

*/ <br>

typedef struct os_event { <br>

    UBYTE  OSEventGrp;                 /* Group corresponding to tasks waiti <br>

ng ffor event to occur      */ <br>

    UBYTE  OSEventTbl[8];              /* List of tasks waiting for event to <br>

 occcur                     */ <br>



    UWORD  OSEventCnt;                 /* Count of used when event is a sema <br>

phorre                      */ <br>

    void  *OSEventPtr;                 /* Pointer to message or queue struct <br>

ure                        */ <br>

} OS_EVENT; <br>

/* <br>

**************************************************************************** <br>

****************************** <br>

*                                        uC/OS TASK CONTROL BLOCK <br>

**************************************************************************** <br>

****************************** <br>

*/ <br>

typedef struct os_tcb { <br>

    void   OS_FAR *OSTCBStkPtr;        /* Pointer to current top of stack <br>

    UBYTE          OSTCBStat;          /* Task status <br>

    UBYTE          OSTCBPrio;          /* Task priority (0 == highest, 63 == <br>

 lowwest)                   */ <br>

    UWORD          OSTCBDly;           /* Nbr ticks to delay task or, timeou <br>

t waaiting for event        */ <br>

    BOOLEAN        OSTCBDelReq;        /* Indicates whether a task needs to <br>

deleete itself              */ <br>

    UBYTE          OSTCBX;             /* Bit position in group  correspondi <br>



ng tto task priority (0..7) */ <br>

    UBYTE          OSTCBY;             /* Index into ready table correspondi <br>

ng tto task priority        */ <br>

    UBYTE          OSTCBBitX;          /* Bit mask to access bit position in <br>

 reaady table               */ <br>

    UBYTE          OSTCBBitY;          /* Bit mask to access bit position in <br>

 reaady group               */ <br>

    OS_EVENT      *OSTCBEventPtr;      /* Pointer to event control block <br>

    void          *OSTCBMsg;           /* Message received from OSMboxPost() <br>

 or OSQPost()              */ <br>

    struct os_tcb *OSTCBNext;          /* Pointer to next     TCB in the TCB <br>

 lisst                      */ <br>

    struct os_tcb *OSTCBPrev;          /* Pointer to previous TCB in the TCB <br>

 lisst                      */ <br>

} OS_TCB; <br>

/* <br>

**************************************************************************** <br>

****************************** <br>

*                                          QUEUE CONTROL BLOCK <br>

**************************************************************************** <br>

****************************** <br>

*/ <br>

*/ <br>

typedef struct os_q { <br>

    struct os_q   *OSQPtr;             /* Link to next queue control block i <br>

n liist of free blocks      */ <br>

    void         **OSQStart;           /* Pointer to start of queue data <br>

    void         **OSQEnd;             /* Pointer to end   of queue data <br>

    void         **OSQIn;              /* Pointer to where next message will <br>

 be inserted  in   the Q   */ <br>

    void         **OSQOut;             /* Pointer to where next message will <br>

 be extracted from the Q   */ <br>

    UBYTE          OSQSize;            /* Size of queue (maximum number of e <br>

ntriies)                    */ <br>

    UBYTE          OSQEntries;         /* Current number of entries in the q <br>

ueuee                       */ <br>

} OS_Q; <br>

/*$PAGE*/ <br>

/* <br>

**************************************************************************** <br>

****************************** <br>

*                                         uC/OS GLOBAL VARIABLES <br>

**************************************************************************** <br>

****************************** <br>

*/ <br>

*/ <br>

                                       /* SYSTEM VARIABLES <br>

OS_EXT  UWORD      OSCtxSwCtr;         /* Counter of number of context switc <br>

hes                        */ <br>

OS_EXT  ULONG      OSIdleCtr;          /* Idle counter <br>

OS_EXT  UBYTE      OSIntNesting;       /* Interrupt nesting level <br>

OS_EXT  BOOLEAN    OSRunning;          /* Flag indicating that kernel is run <br>

ningg                       */ <br>

OS_EXT  OS_TCB    *OSTCBCur;           /* Pointer to currently running TCB <br>

OS_EXT  OS_TCB    *OSTCBHighRdy;       /* Pointer to highest priority TCB re <br>

ady to run                 */ <br>

OS_EXT  OS_TCB    *OSTCBPrioTbl[64];   /* Table of pointers to all created T <br>

CBs                        */ <br>

/* <br>

**************************************************************************** <br>

****************************** <br>

*                                       uC/OS FUNCTION PROTOTYPES <br>

**************************************************************************** <br>

****************************** <br>

*/ <br>

void        OSInit(void); <br>

void        OSStart(void); <br>

void        OSStartHighRdy(void); <br>



void        OSSched(void); <br>

void        OSSchedLock(void); <br>

void        OSSchedUnlock(void); <br>

UBYTE       OSTaskCreate(void (OS_FAR *task)(void *pd), void *pdata, void *p <br>

stk,, UBYTE prio); <br>

UBYTE       OSTaskDel(UBYTE prio); <br>

UBYTE       OSTaskDelReq(UBYTE prio); <br>

UBYTE       OSTaskChangePrio(UBYTE oldprio, UBYTE newprio); <br>

UBYTE       OSTaskSuspend(UBYTE prio); <br>

UBYTE       OSTaskResume(UBYTE prio); <br>

UBYTE       OSTCBInit(UBYTE prio, void OS_FAR *stk); <br>

void        OSIntEnter(void); <br>

void        OSIntExit(void); <br>

void        OSIntCtxSw(void); <br>

void OS_FAR OSCtxSw(void); <br>

void OS_FAR OSTickISR(void); <br>

void        OSTimeDly(UWORD ticks); <br>

UBYTE       OSTimeDlyResume(UBYTE prio); <br>

void        OSTimeTick(void); <br>

void        OSTimeSet(ULONG ticks); <br>

ULONG       OSTimeGet(void); <br>

OS_EVENT   *OSSemCreate(UWORD value); <br>



UWORD       OSSemAccept(OS_EVENT *pevent); <br>

UBYTE       OSSemPost(OS_EVENT *pevent); <br>

void        OSSemPend(OS_EVENT *pevent, UWORD timeout, UBYTE *err); <br>

OS_EVENT   *OSMboxCreate(void *msg); <br>

void       *OSMboxAccept(OS_EVENT *pevent); <br>

UBYTE       OSMboxPost(OS_EVENT *pevent, void *msg); <br>

void       *OSMboxPend(OS_EVENT *pevent, UWORD timeout, UBYTE *err); <br>

OS_EVENT   *OSQCreate(void **start, UBYTE size); <br>

void       *OSQAccept(OS_EVENT *pevent); <br>

UBYTE       OSQPost(OS_EVENT *pevent, void *msg); <br>

void       *OSQPend(OS_EVENT *pevent, UWORD timeout, UBYTE *err) <br>

-- <br>

  <br>

-- <br>

※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.7.200] <br>

</small><hr>
<p align="center">[<a href="嵌入式系统.htm">回到开始</a>][<a href="62.htm">上一层</a>][<a href="133.htm">下一篇</a>]
<p align="center"><a href="http://cterm.163.net">欢迎访问Cterm主页</a></p>
</table>
</body>
</html>

⌨️ 快捷键说明

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