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

📄 ucos_ii.h

📁 完整的ucos实例
💻 H
📖 第 1 页 / 共 4 页
字号:
/* 
********************************************************************************************************* 
*                                                uC/OS-II 
*                                          The Real-Time Kernel 
* 
*                            (c) Copyright 1992-2002, Jean J. Labrosse, Weston, FL 
*                                           All Rights Reserved 
* 
* File : uCOS_II.H 
* By   : Jean J. Labrosse 
********************************************************************************************************* 
*/ 
 
/* 
********************************************************************************************************* 
*                                             MISCELLANEOUS 
********************************************************************************************************* 
*/ 
 
#define  OS_VERSION              252                    /* Version of uC/OS-II (Vx.yy mult. by 100)    */ 
 
#ifdef   OS_GLOBALS 
#define  OS_EXT 
#else 
#define  OS_EXT  extern 
#endif 
 
#ifndef  FALSE 
#define  FALSE                     0 
#endif 
 
#ifndef  TRUE 
#define  TRUE                      1 
#endif 
 
#define  OS_PRIO_SELF           0xFF                    /* Indicate SELF priority                      */ 
 
#if OS_TASK_STAT_EN > 0 
#define  OS_N_SYS_TASKS            2                    /* Number of system tasks                      */ 
#else 
#define  OS_N_SYS_TASKS            1 
#endif 
 
#define  OS_STAT_PRIO       (OS_LOWEST_PRIO - 1)        /* Statistic task priority                     */ 
#define  OS_IDLE_PRIO       (OS_LOWEST_PRIO)            /* IDLE      task priority                     */ 
 
#define  OS_EVENT_TBL_SIZE ((OS_LOWEST_PRIO) / 8 + 1)   /* Size of event table                         */ 
#define  OS_RDY_TBL_SIZE   ((OS_LOWEST_PRIO) / 8 + 1)   /* Size of ready table                         */ 
 
#define  OS_TASK_IDLE_ID       65535                    /* I.D. numbers for Idle and Stat tasks        */ 
#define  OS_TASK_STAT_ID       65534 
 
#define  OS_EVENT_EN       (((OS_Q_EN > 0) && (OS_MAX_QS > 0)) || (OS_MBOX_EN > 0) || (OS_SEM_EN > 0) || (OS_MUTEX_EN > 0)) 
 
/*$PAGE*/ 
/* 
********************************************************************************************************* 
*                              TASK STATUS (Bit definition for OSTCBStat) 
********************************************************************************************************* 
*/ 
#define  OS_STAT_RDY            0x00        /* Ready to run                                            */ 
#define  OS_STAT_SEM            0x01        /* Pending on semaphore                                    */ 
#define  OS_STAT_MBOX           0x02        /* Pending on mailbox                                      */ 
#define  OS_STAT_Q              0x04        /* Pending on queue                                        */ 
#define  OS_STAT_SUSPEND        0x08        /* Task is suspended                                       */ 
#define  OS_STAT_MUTEX          0x10        /* Pending on mutual exclusion semaphore                   */ 
#define  OS_STAT_FLAG           0x20        /* Pending on event flag group                             */ 
 
/* 
********************************************************************************************************* 
*                                        OS_EVENT types 
********************************************************************************************************* 
*/ 
#define  OS_EVENT_TYPE_UNUSED      0 
#define  OS_EVENT_TYPE_MBOX        1 
#define  OS_EVENT_TYPE_Q           2 
#define  OS_EVENT_TYPE_SEM         3 
#define  OS_EVENT_TYPE_MUTEX       4 
#define  OS_EVENT_TYPE_FLAG        5 
 
/* 
********************************************************************************************************* 
*                                         EVENT FLAGS 
********************************************************************************************************* 
*/ 
#define  OS_FLAG_WAIT_CLR_ALL      0        /* Wait for ALL    the bits specified to be CLR (i.e. 0)   */  
#define  OS_FLAG_WAIT_CLR_AND      0 
 
#define  OS_FLAG_WAIT_CLR_ANY      1        /* Wait for ANY of the bits specified to be CLR (i.e. 0)   */ 
#define  OS_FLAG_WAIT_CLR_OR       1 
 
#define  OS_FLAG_WAIT_SET_ALL      2        /* Wait for ALL    the bits specified to be SET (i.e. 1)   */  
#define  OS_FLAG_WAIT_SET_AND      2 
 
#define  OS_FLAG_WAIT_SET_ANY      3        /* Wait for ANY of the bits specified to be SET (i.e. 1)   */ 
#define  OS_FLAG_WAIT_SET_OR       3 
 
 
#define  OS_FLAG_CONSUME        0x80        /* Consume the flags if condition(s) satisfied             */ 
 
 
#define  OS_FLAG_CLR               0 
#define  OS_FLAG_SET               1 
 
/* 
********************************************************************************************************* 
*       Possible values for 'opt' argument of OSSemDel(), OSMboxDel(), OSQDel() and OSMutexDel() 
********************************************************************************************************* 
*/ 
#define  OS_DEL_NO_PEND            0 
#define  OS_DEL_ALWAYS             1 
 
/* 
********************************************************************************************************* 
*                                     OS???PostOpt() OPTIONS 
* 
* These #defines are used to establish the options for OSMboxPostOpt() and OSQPostOpt(). 
********************************************************************************************************* 
*/ 
#define  OS_POST_OPT_NONE       0x00        /* Post to highest priority task waiting                   */ 
#define  OS_POST_OPT_BROADCAST  0x01        /* Broadcast message to ALL tasks waiting                  */   
#define  OS_POST_OPT_FRONT      0x02        /* Post to highest priority task waiting                   */ 
 
/* 
********************************************************************************************************* 
*                                 TASK OPTIONS (see OSTaskCreateExt())  
********************************************************************************************************* 
*/ 
#define  OS_TASK_OPT_STK_CHK  0x0001        /* Enable stack checking for the task                      */ 
#define  OS_TASK_OPT_STK_CLR  0x0002        /* Clear the stack when the task is create                 */ 
#define  OS_TASK_OPT_SAVE_FP  0x0004        /* Save the contents of any floating-point registers       */ 
 
/* 
********************************************************************************************************* 
*                                             ERROR CODES 
********************************************************************************************************* 
*/ 
#define OS_NO_ERR                 0 
 
#define OS_ERR_EVENT_TYPE         1 
#define OS_ERR_PEND_ISR           2 
#define OS_ERR_POST_NULL_PTR      3 
#define OS_ERR_PEVENT_NULL        4 
#define OS_ERR_POST_ISR           5 
#define OS_ERR_QUERY_ISR          6 
#define OS_ERR_INVALID_OPT        7 
#define OS_ERR_TASK_WAITING       8 
 
#define OS_TIMEOUT               10 
#define OS_TASK_NOT_EXIST        11 
 
#define OS_MBOX_FULL             20 
 
#define OS_Q_FULL                30 
 
#define OS_PRIO_EXIST            40 
#define OS_PRIO_ERR              41 
#define OS_PRIO_INVALID          42 
 
#define OS_SEM_OVF               50 
 
#define OS_TASK_DEL_ERR          60 
#define OS_TASK_DEL_IDLE         61 
#define OS_TASK_DEL_REQ          62 
#define OS_TASK_DEL_ISR          63 
 
#define OS_NO_MORE_TCB           70 
 
#define OS_TIME_NOT_DLY          80 
#define OS_TIME_INVALID_MINUTES  81 
#define OS_TIME_INVALID_SECONDS  82 
#define OS_TIME_INVALID_MILLI    83 
#define OS_TIME_ZERO_DLY         84 
 
#define OS_TASK_SUSPEND_PRIO     90 
#define OS_TASK_SUSPEND_IDLE     91 
 
#define OS_TASK_RESUME_PRIO     100 
#define OS_TASK_NOT_SUSPENDED   101 
 
#define OS_MEM_INVALID_PART     110 
#define OS_MEM_INVALID_BLKS     111 
#define OS_MEM_INVALID_SIZE     112 
#define OS_MEM_NO_FREE_BLKS     113 
#define OS_MEM_FULL             114 
#define OS_MEM_INVALID_PBLK     115 
#define OS_MEM_INVALID_PMEM     116 
#define OS_MEM_INVALID_PDATA    117 
#define OS_MEM_INVALID_ADDR     118 
 
#define OS_ERR_NOT_MUTEX_OWNER  120 
 
#define OS_TASK_OPT_ERR         130 
 
#define OS_ERR_DEL_ISR          140 
#define OS_ERR_CREATE_ISR       141 
 
#define OS_FLAG_INVALID_PGRP    150 
#define OS_FLAG_ERR_WAIT_TYPE   151 
#define OS_FLAG_ERR_NOT_RDY     152 
#define OS_FLAG_INVALID_OPT     153 
#define OS_FLAG_GRP_DEPLETED    154 
 
/*$PAGE*/ 
/* 
********************************************************************************************************* 
*                                          EVENT CONTROL BLOCK 
********************************************************************************************************* 
*/ 
 
#if (OS_EVENT_EN > 0) && (OS_MAX_EVENTS > 0) 
typedef struct { 
    INT8U   OSEventType;                   /* Type of event control block (see OS_EVENT_TYPE_???)      */ 
    INT8U   OSEventGrp;                    /* Group corresponding to tasks waiting for event to occur  */ 
    INT16U  OSEventCnt;                    /* Semaphore Count (not used if other EVENT type)           */ 
    void   *OSEventPtr;                    /* Pointer to message or queue structure                    */ 
    INT8U   OSEventTbl[OS_EVENT_TBL_SIZE]; /* List of tasks waiting for event to occur                 */ 
} OS_EVENT; 
#endif 
 
 
/* 
********************************************************************************************************* 
*                                       EVENT FLAGS CONTROL BLOCK 
********************************************************************************************************* 
*/ 
 
#if (OS_VERSION >= 251) && (OS_FLAG_EN > 0) && (OS_MAX_FLAGS > 0) 
typedef struct {                            /* Event Flag Group                                        */ 
    INT8U         OSFlagType;               /* Should be set to OS_EVENT_TYPE_FLAG                     */ 
    void         *OSFlagWaitList;           /* Pointer to first NODE of task waiting on event flag     */ 
    OS_FLAGS      OSFlagFlags;              /* 8, 16 or 32 bit flags                                   */ 
} OS_FLAG_GRP;     
 
     
     
typedef struct {                            /* Event Flag Wait List Node                               */ 
    void         *OSFlagNodeNext;           /* Pointer to next     NODE in wait list                   */ 
    void         *OSFlagNodePrev;           /* Pointer to previous NODE in wait list                   */ 
    void         *OSFlagNodeTCB;            /* Pointer to TCB of waiting task                          */   
    void         *OSFlagNodeFlagGrp;        /* Pointer to Event Flag Group                             */   
    OS_FLAGS      OSFlagNodeFlags;          /* Event flag to wait on                                   */   
    INT8U         OSFlagNodeWaitType;       /* Type of wait:                                           */ 
                                            /*      OS_FLAG_WAIT_AND                                   */ 
                                            /*      OS_FLAG_WAIT_ALL                                   */ 
                                            /*      OS_FLAG_WAIT_OR                                    */ 
                                            /*      OS_FLAG_WAIT_ANY                                   */ 
} OS_FLAG_NODE; 
#endif 
 
 
/* 
********************************************************************************************************* 
*                                          MESSAGE MAILBOX DATA 
********************************************************************************************************* 
*/ 
 
#if OS_MBOX_EN > 0 
typedef struct { 
    void   *OSMsg;                         /* Pointer to message in mailbox                            */ 
    INT8U   OSEventTbl[OS_EVENT_TBL_SIZE]; /* List of tasks waiting for event to occur                 */ 
    INT8U   OSEventGrp;                    /* Group corresponding to tasks waiting for event to occur  */ 
} OS_MBOX_DATA; 
#endif 
 
/* 
********************************************************************************************************* 
*                                     MEMORY PARTITION DATA STRUCTURES 
********************************************************************************************************* 
*/ 
 
#if (OS_MEM_EN > 0) && (OS_MAX_MEM_PART > 0) 
typedef struct {                       /* MEMORY CONTROL BLOCK                                         */ 
    void   *OSMemAddr;                 /* Pointer to beginning of memory partition                     */ 
    void   *OSMemFreeList;             /* Pointer to list of free memory blocks                        */ 
    INT32U  OSMemBlkSize;              /* Size (in bytes) of each block of memory                      */ 
    INT32U  OSMemNBlks;                /* Total number of blocks in this partition                     */ 
    INT32U  OSMemNFree;                /* Number of memory blocks remaining in this partition          */ 
} OS_MEM; 
 
 
typedef struct { 
    void   *OSAddr;                    /* Pointer to the beginning address of the memory partition     */ 
    void   *OSFreeList;                /* Pointer to the beginning of the free list of memory blocks   */ 
    INT32U  OSBlkSize;                 /* Size (in bytes) of each memory block                         */ 
    INT32U  OSNBlks;                   /* Total number of blocks in the partition                      */ 
    INT32U  OSNFree;                   /* Number of memory blocks free                                 */ 
    INT32U  OSNUsed;                   /* Number of memory blocks used                                 */ 

⌨️ 快捷键说明

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