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

📄 ucos_ii.h

📁 ucos移植学习
💻 H
📖 第 1 页 / 共 2 页
字号:
    INT8U          OSTCBStat;          /* Task status                                                  */
    INT8U          OSTCBPrio;          /* Task priority (0 == highest, 63 == lowest)                   */

    INT8U          OSTCBX;             /* Bit position in group  corresponding to task priority (0..7) */
    INT8U          OSTCBY;             /* Index into ready table corresponding to task priority        */
    INT8U          OSTCBBitX;          /* Bit mask to access bit position in ready table               */
    INT8U          OSTCBBitY;          /* Bit mask to access bit position in ready group               */
    
#if OS_TASK_DEL_EN    
    BOOLEAN        OSTCBDelReq;        /* Indicates whether a task needs to delete itself              */
#endif
} OS_TCB;

/*$PAGE*/
/*
*********************************************************************************************************
*                                            GLOBAL VARIABLES
*********************************************************************************************************
*/
                                       
OS_EXT  INT32U	DT_XDATA	OSCtxSwCtr;               /* Counter of number of context switches                */

#if     (OS_MAX_EVENTS >= 2)
OS_EXT  OS_EVENT DT_XDATA *	DT_XDATA	OSEventFreeList;          /* Pointer to list of free EVENT control blocks         */
OS_EXT  OS_EVENT	DT_XDATA	OSEventTbl[OS_MAX_EVENTS];/* Table of EVENT control blocks                        */
#endif

OS_EXT  INT32U	DT_XDATA	OSIdleCtr;                /* Idle counter                                         */

#if     OS_TASK_STAT_EN
OS_EXT  INT8S	DT_XDATA	OSCPUUsage;               /* Percentage of CPU used                               */
OS_EXT  INT32U	DT_XDATA	OSIdleCtrMax;             /* Maximum value that idle counter can take in 1 sec.   */
OS_EXT  INT32U	DT_XDATA	OSIdleCtrRun;             /* Value reached by idle counter at run time in 1 sec.  */
OS_EXT  BOOLEAN	DT_XDATA	OSStatRdy;                /* Flag indicating that the statistic task is ready     */
#endif

OS_EXT  INT8U	DT_XDATA	OSIntNesting;             /* Interrupt nesting level                              */

OS_EXT  INT8U	DT_XDATA	OSLockNesting;            /* Multitasking lock nesting level                      */

OS_EXT  INT8U	DT_XDATA	OSPrioCur;                /* Priority of current task                             */
OS_EXT  INT8U	DT_XDATA	OSPrioHighRdy;            /* Priority of highest priority task                    */

OS_EXT  INT8U	DT_XDATA	OSRdyGrp;                        /* Ready list group                              */
OS_EXT  INT8U	DT_XDATA	OSRdyTbl[OS_RDY_TBL_SIZE];       /* Table of tasks which are ready to run         */

OS_EXT  BOOLEAN	DT_XDATA	OSRunning;                       /* Flag indicating that kernel is running        */

#if     OS_TASK_CREATE_EN  || OS_TASK_CREATE_EXT_EN || OS_TASK_DEL_EN
OS_EXT  INT8U	DT_XDATA	OSTaskCtr;                       /* Number of tasks created                       */
#endif

OS_EXT  OS_TCB DT_XDATA *	DT_XDATA	OSTCBCur;                        /* Pointer to currently running TCB              */
OS_EXT  OS_TCB DT_XDATA *	DT_XDATA	OSTCBFreeList;                   /* Pointer to list of free TCBs                  */
OS_EXT  OS_TCB DT_XDATA *	DT_XDATA	OSTCBHighRdy;                    /* Pointer to highest priority TCB ready to run  */
OS_EXT  OS_TCB DT_XDATA *	DT_XDATA	OSTCBList;                       /* Pointer to doubly linked list of TCBs         */
OS_EXT  OS_TCB DT_XDATA *	DT_XDATA	OSTCBPrioTbl[OS_LOWEST_PRIO + 1];/* Table of pointers to created TCBs             */

OS_EXT  INT32U	DT_XDATA	OSTime;                   /* Current value of system time (in ticks)              */


extern  INT8U const	DT_XDATA	OSMapTbl[];               /* Priority->Bit Mask lookup table                      */
extern  INT8U const	DT_XDATA	OSUnMapTbl[];             /* Priority->Index    lookup table                      */

/*$PAGE*/
/*
*********************************************************************************************************
*                                          FUNCTION PROTOTYPES
*                                     (Target Independant Functions)
*********************************************************************************************************
*/

/*
*********************************************************************************************************
*                                        MESSAGE MAILBOX MANAGEMENT
*********************************************************************************************************
*/
#if         OS_MBOX_EN
void       DT_XDATA *OSMboxAccept(OS_EVENT DT_XDATA *pevent) REENTRANT;
OS_EVENT   DT_XDATA *OSMboxCreate(void DT_XDATA *msg) REENTRANT;
void       DT_XDATA *OSMboxPend(OS_EVENT DT_XDATA *pevent, INT16U timeout, INT8U DT_XDATA *err) REENTRANT;
INT8U       OSMboxPost(OS_EVENT DT_XDATA *pevent, void DT_XDATA *msg) REENTRANT;
INT8U       OSMboxQuery(OS_EVENT DT_XDATA *pevent, OS_MBOX_DATA DT_XDATA *ppdata) REENTRANT;
#endif
/*
*********************************************************************************************************
*                                           MEMORY MANAGEMENT
*********************************************************************************************************
*/
#if         OS_MEM_EN && (OS_MAX_MEM_PART >= 2)
OS_MEM      DT_XDATA *OSMemCreate(void DT_XDATA *addr, INT32U nblks, INT32U blksize, INT8U DT_XDATA *err) REENTRANT;
void        DT_XDATA *OSMemGet(OS_MEM DT_XDATA *pmem, INT8U DT_XDATA *err) REENTRANT;
INT8U       OSMemPut(OS_MEM DT_XDATA *pmem, void DT_XDATA *pblk) REENTRANT;
INT8U       OSMemQuery(OS_MEM DT_XDATA *pmem, OS_MEM_DATA DT_XDATA *ppdata) REENTRANT;
#endif
/*
*********************************************************************************************************
*                                         MESSAGE QUEUE MANAGEMENT
*********************************************************************************************************
*/
#if         OS_Q_EN && (OS_MAX_QS >= 2)
void        DT_XDATA *OSQAccept(OS_EVENT DT_XDATA *pevent) REENTRANT;
OS_EVENT    DT_XDATA *OSQCreate(void  DT_XDATA * DT_XDATA *start, INT16U size) REENTRANT;
INT8U       OSQFlush(OS_EVENT DT_XDATA *pevent) REENTRANT;
void        DT_XDATA *OSQPend(OS_EVENT DT_XDATA *pevent, INT16U timeout, INT8U DT_XDATA *err) REENTRANT;
INT8U       OSQPost(OS_EVENT DT_XDATA *pevent, void DT_XDATA *msg) REENTRANT;
INT8U       OSQPostFront(OS_EVENT DT_XDATA *pevent, void DT_XDATA *msg) REENTRANT;
INT8U       OSQQuery(OS_EVENT DT_XDATA *pevent, OS_Q_DATA DT_XDATA *ppdata) REENTRANT;
#endif
/*$PAGE*/
/*
*********************************************************************************************************
*                                          SEMAPHORE MANAGEMENT
*********************************************************************************************************
*/
#if         OS_SEM_EN
INT16U      OSSemAccept(OS_EVENT DT_XDATA *pevent) REENTRANT;
OS_EVENT    DT_XDATA *OSSemCreate(INT16U value) REENTRANT;
void        OSSemPend(OS_EVENT DT_XDATA *pevent, INT16U timeout, INT8U DT_XDATA *err) REENTRANT;
INT8U       OSSemPost(OS_EVENT DT_XDATA *pevent) REENTRANT;
INT8U       OSSemQuery(OS_EVENT DT_XDATA *pevent, OS_SEM_DATA DT_XDATA *ppdata) REENTRANT;
#endif
/*
*********************************************************************************************************
*                                            TASK MANAGEMENT
*********************************************************************************************************
*/
#if         OS_TASK_CHANGE_PRIO_EN
INT8U       OSTaskChangePrio(INT8U oldprio, INT8U newprio) REENTRANT;
#endif

INT8U       OSTaskCreate(void (DT_CODE *task)(void DT_XDATA *pd), void DT_XDATA *ppdata, OS_STK DT_XDATA *ptos, INT8U prio) REENTRANT;

#if         OS_TASK_CREATE_EXT_EN
INT8U       OSTaskCreateExt(void  (DT_CODE *task)(void DT_XDATA *pd), 
                            void   DT_XDATA *ppdata, 
                            OS_STK DT_XDATA *ptos, 
                            INT8U   prio,
                            INT16U  id,
                            OS_STK DT_XDATA *pbos,
                            INT32U  stk_size,
                            void   DT_XDATA *pext,
                            INT16U  opt) REENTRANT;
#endif                            

#if         OS_TASK_DEL_EN
INT8U       OSTaskDel(INT8U prio) REENTRANT;
INT8U       OSTaskDelReq(INT8U prio) REENTRANT;
#endif

#if         OS_TASK_SUSPEND_EN
INT8U       OSTaskResume(INT8U prio) REENTRANT;
INT8U       OSTaskSuspend(INT8U prio) REENTRANT;
#endif

#if         OS_TASK_CREATE_EXT_EN
INT8U       OSTaskStkChk(INT8U prio, OS_STK_DATA DT_XDATA *ppdata) REENTRANT;
#endif

INT8U       OSTaskQuery(INT8U prio, OS_TCB DT_XDATA *ppdata) REENTRANT;

/*
*********************************************************************************************************
*                                            TIME MANAGEMENT
*********************************************************************************************************
*/
void        OSTimeDly(INT16U ticks) REENTRANT;
INT8U       OSTimeDlyHMSM(INT8U hours, INT8U minutes, INT8U seconds, INT16U milli) REENTRANT;
INT8U       OSTimeDlyResume(INT8U prio) REENTRANT;
INT32U      OSTimeGet(void) REENTRANT;
void        OSTimeSet(INT32U ticks) REENTRANT;
void        OSTimeTick(void) REENTRANT;

/*
*********************************************************************************************************
*                                             MISCELLANEOUS
*********************************************************************************************************
*/

void        OSInit(void) REENTRANT;

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

void        OSSchedLock(void) REENTRANT;
void        OSSchedUnlock(void) REENTRANT;

void        OSStart(void) REENTRANT;

void        OSStatInit(void) REENTRANT;

INT16U      OSVersion(void) REENTRANT;

/*$PAGE*/
/*
*********************************************************************************************************
*                                      INTERNAL FUNCTION PROTOTYPES
*                            (Your application MUST NOT call these functions)
*********************************************************************************************************
*/

#if         OS_MBOX_EN || OS_Q_EN || OS_SEM_EN
void        OSEventTaskRdy(OS_EVENT DT_XDATA *pevent, void DT_XDATA *msg, INT8U msk) REENTRANT;
void        OSEventTaskWait(OS_EVENT DT_XDATA *pevent) REENTRANT;
void        OSEventTO(OS_EVENT DT_XDATA *pevent) REENTRANT;
void        OSEventWaitListInit(OS_EVENT DT_XDATA *pevent) REENTRANT;
#endif

#if         OS_MEM_EN && (OS_MAX_MEM_PART >= 2)
void        OSMemInit(void) REENTRANT;
#endif

#if         OS_Q_EN
void        OSQInit(void) REENTRANT;
#endif

void        OSSched(void) REENTRANT;

void        OSTaskIdle(void DT_XDATA *ddata) REENTRANT;

#if         OS_TASK_STAT_EN
void        OSTaskStat(void DT_XDATA *ddata) REENTRANT;
#endif

INT8U       OSTCBInit(INT8U prio, OS_STK DT_XDATA *ptos, OS_STK DT_XDATA *pbos, INT16U id, INT16U stk_size, void DT_XDATA *pext, INT16U opt) REENTRANT;

/*$PAGE*/
/*
*********************************************************************************************************
*                                          FUNCTION PROTOTYPES
*                                      (Target Specific Functions)
*********************************************************************************************************
*/

void        OSCtxSw(void);

void        OSIntCtxSw(void);

void        OSStartHighRdy(void);

void        OSTaskCreateHook(OS_TCB DT_XDATA *ptcb) REENTRANT;
void        OSTaskDelHook(OS_TCB DT_XDATA *ptcb) REENTRANT;
void        OSTaskStatHook(void) REENTRANT;
void        DT_XDATA *OSTaskStkInit(void (DT_CODE *task)(void DT_XDATA *pd), void DT_XDATA *ppdata, void DT_XDATA *ptos, INT16U opt) REENTRANT;
void        OSTaskSwHook(void) REENTRANT;

void        OSTickISR(void);

void        OSTimeTickHook(void) REENTRANT;
/*------------------------------application function---------------------------------------*/
void       ledd(void);

⌨️ 快捷键说明

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