?? 00000000.htm
字號(hào):
**************************************************************************** <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 />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 /> /* 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 />※ 來(lái)源:·BBS 水木清華站 smth.org·[FROM: 166.111.7.200] <br /><a href="javascript:history.go(-1)">返回上一頁(yè)</a><a href="index.htm">回到目錄</a><a href="#top">回到頁(yè)首</a><a href="00000001.htm">下一篇</a></h1></center><center><h1>BBS 水木清華站∶精華區(qū)</h1></center></body></html>
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -