uCOS_II.H
上传用户:dsfgsdff
上传日期:2022-07-10
资源大小:319k
文件大小:45k
源码类别:

微处理器开发

开发平台:

C/C++

  1. /*****************************************************************************
  2. //硬件环境:LPC2148 V2.0学习开发板。
  3. //软件环境:KEIL FOR ARM 3.03A
  4. //编写/调试:山东王强/大浪淘沙
  5. //功能:下载程序后开机开发板上的8个LED闪亮    
  6. //备注:LED跳线请正确连接。
  7.  * ******************************************************************************/
  8. /************//*********************************************************************************************
  9. *                                             MISCELLANEOUS
  10. ************//*********************************************************************************************
  11. */
  12. #define  OS_VERSION              252                    /* Version of uC/OS-II (Vx.yy mult. by 100)    */
  13. #ifdef   OS_GLOBALS
  14. #define  OS_EXT
  15. #else
  16. #define  OS_EXT  extern
  17. #endif
  18. #ifndef  FALSE
  19. #define  FALSE                     0
  20. #endif
  21. #ifndef  TRUE
  22. #define  TRUE                      1
  23. #endif
  24. #define  OS_PRIO_SELF           0xFF                    /* Indicate SELF priority                      */
  25. #if OS_TASK_STAT_EN > 0
  26. #define  OS_N_SYS_TASKS            2                    /* Number of system tasks                      */
  27. #else
  28. #define  OS_N_SYS_TASKS            1
  29. #endif
  30. #define  OS_STAT_PRIO       (OS_LOWEST_PRIO - 1)        /* Statistic task priority                     */
  31. #define  OS_IDLE_PRIO       (OS_LOWEST_PRIO)            /* IDLE      task priority                     */
  32. #define  OS_EVENT_TBL_SIZE ((OS_LOWEST_PRIO) / 8 + 1)   /* Size of event table                         */
  33. #define  OS_RDY_TBL_SIZE   ((OS_LOWEST_PRIO) / 8 + 1)   /* Size of ready table                         */
  34. #define  OS_TASK_IDLE_ID       65535                    /* I.D. numbers for Idle and Stat tasks        */
  35. #define  OS_TASK_STAT_ID       65534
  36. #define  OS_EVENT_EN       (((OS_Q_EN > 0) && (OS_MAX_QS > 0)) || (OS_MBOX_EN > 0) || (OS_SEM_EN > 0) || (OS_MUTEX_EN > 0))
  37. /*$PAGE*/
  38. /*
  39. *********************************************************************************************************
  40. *                              TASK STATUS (Bit definition for OSTCBStat)
  41. *********************************************************************************************************
  42. */
  43. #define  OS_STAT_RDY            0x00        /* Ready to run                                            */
  44. #define  OS_STAT_SEM            0x01        /* Pending on semaphore                                    */
  45. #define  OS_STAT_MBOX           0x02        /* Pending on mailbox                                      */
  46. #define  OS_STAT_Q              0x04        /* Pending on queue                                        */
  47. #define  OS_STAT_SUSPEND        0x08        /* Task is suspended                                       */
  48. #define  OS_STAT_MUTEX          0x10        /* Pending on mutual exclusion semaphore                   */
  49. #define  OS_STAT_FLAG           0x20        /* Pending on event flag group                             */
  50. /*
  51. *********************************************************************************************************
  52. *                                        OS_EVENT types
  53. *********************************************************************************************************
  54. */
  55. #define  OS_EVENT_TYPE_UNUSED      0
  56. #define  OS_EVENT_TYPE_MBOX        1
  57. #define  OS_EVENT_TYPE_Q           2
  58. #define  OS_EVENT_TYPE_SEM         3
  59. #define  OS_EVENT_TYPE_MUTEX       4
  60. #define  OS_EVENT_TYPE_FLAG        5
  61. /*
  62. *********************************************************************************************************
  63. *                                         EVENT FLAGS
  64. *********************************************************************************************************
  65. */
  66. #define  OS_FLAG_WAIT_CLR_ALL      0        /* Wait for ALL    the bits specified to be CLR (i.e. 0)   */ 
  67. #define  OS_FLAG_WAIT_CLR_AND      0
  68. #define  OS_FLAG_WAIT_CLR_ANY      1        /* Wait for ANY of the bits specified to be CLR (i.e. 0)   */
  69. #define  OS_FLAG_WAIT_CLR_OR       1
  70. #define  OS_FLAG_WAIT_SET_ALL      2        /* Wait for ALL    the bits specified to be SET (i.e. 1)   */ 
  71. #define  OS_FLAG_WAIT_SET_AND      2
  72. #define  OS_FLAG_WAIT_SET_ANY      3        /* Wait for ANY of the bits specified to be SET (i.e. 1)   */
  73. #define  OS_FLAG_WAIT_SET_OR       3
  74. #define  OS_FLAG_CONSUME        0x80        /* Consume the flags if condition(s) satisfied             */
  75. #define  OS_FLAG_CLR               0
  76. #define  OS_FLAG_SET               1
  77. /*
  78. *********************************************************************************************************
  79. *       Possible values for 'opt' argument of OSSemDel(), OSMboxDel(), OSQDel() and OSMutexDel()
  80. *********************************************************************************************************
  81. */
  82. #define  OS_DEL_NO_PEND            0
  83. #define  OS_DEL_ALWAYS             1
  84. /*
  85. *********************************************************************************************************
  86. *                                     OS???PostOpt() OPTIONS
  87. *
  88. * These #defines are used to establish the options for OSMboxPostOpt() and OSQPostOpt().
  89. *********************************************************************************************************
  90. */
  91. #define  OS_POST_OPT_NONE       0x00        /* Post to highest priority task waiting                   */
  92. #define  OS_POST_OPT_BROADCAST  0x01        /* Broadcast message to ALL tasks waiting                  */  
  93. #define  OS_POST_OPT_FRONT      0x02        /* Post to highest priority task waiting                   */
  94. /*
  95. *********************************************************************************************************
  96. *                                 TASK OPTIONS (see OSTaskCreateExt()) 
  97. *********************************************************************************************************
  98. */
  99. #define  OS_TASK_OPT_STK_CHK  0x0001        /* Enable stack checking for the task                      */
  100. #define  OS_TASK_OPT_STK_CLR  0x0002        /* Clear the stack when the task is create                 */
  101. #define  OS_TASK_OPT_SAVE_FP  0x0004        /* Save the contents of any floating-point registers       */
  102. /*
  103. *********************************************************************************************************
  104. *                                             ERROR CODES
  105. *********************************************************************************************************
  106. */
  107. #define OS_NO_ERR                 0
  108. #define OS_ERR_EVENT_TYPE         1
  109. #define OS_ERR_PEND_ISR           2
  110. #define OS_ERR_POST_NULL_PTR      3
  111. #define OS_ERR_PEVENT_NULL        4
  112. #define OS_ERR_POST_ISR           5
  113. #define OS_ERR_QUERY_ISR          6
  114. #define OS_ERR_INVALID_OPT        7
  115. #define OS_ERR_TASK_WAITING       8
  116. #define OS_TIMEOUT               10
  117. #define OS_TASK_NOT_EXIST        11
  118. #define OS_MBOX_FULL             20
  119. #define OS_Q_FULL                30
  120. #define OS_PRIO_EXIST            40
  121. #define OS_PRIO_ERR              41
  122. #define OS_PRIO_INVALID          42
  123. #define OS_SEM_OVF               50
  124. #define OS_TASK_DEL_ERR          60
  125. #define OS_TASK_DEL_IDLE         61
  126. #define OS_TASK_DEL_REQ          62
  127. #define OS_TASK_DEL_ISR          63
  128. #define OS_NO_MORE_TCB           70
  129. #define OS_TIME_NOT_DLY          80
  130. #define OS_TIME_INVALID_MINUTES  81
  131. #define OS_TIME_INVALID_SECONDS  82
  132. #define OS_TIME_INVALID_MILLI    83
  133. #define OS_TIME_ZERO_DLY         84
  134. #define OS_TASK_SUSPEND_PRIO     90
  135. #define OS_TASK_SUSPEND_IDLE     91
  136. #define OS_TASK_RESUME_PRIO     100
  137. #define OS_TASK_NOT_SUSPENDED   101
  138. #define OS_MEM_INVALID_PART     110
  139. #define OS_MEM_INVALID_BLKS     111
  140. #define OS_MEM_INVALID_SIZE     112
  141. #define OS_MEM_NO_FREE_BLKS     113
  142. #define OS_MEM_FULL             114
  143. #define OS_MEM_INVALID_PBLK     115
  144. #define OS_MEM_INVALID_PMEM     116
  145. #define OS_MEM_INVALID_PDATA    117
  146. #define OS_MEM_INVALID_ADDR     118
  147. #define OS_ERR_NOT_MUTEX_OWNER  120
  148. #define OS_TASK_OPT_ERR         130
  149. #define OS_ERR_DEL_ISR          140
  150. #define OS_ERR_CREATE_ISR       141
  151. #define OS_FLAG_INVALID_PGRP    150
  152. #define OS_FLAG_ERR_WAIT_TYPE   151
  153. #define OS_FLAG_ERR_NOT_RDY     152
  154. #define OS_FLAG_INVALID_OPT     153
  155. #define OS_FLAG_GRP_DEPLETED    154
  156. /*$PAGE*/
  157. /*
  158. *********************************************************************************************************
  159. *                                          EVENT CONTROL BLOCK
  160. *********************************************************************************************************
  161. */
  162. #if (OS_EVENT_EN > 0) && (OS_MAX_EVENTS > 0)
  163. typedef struct {
  164.     INT8U   OSEventType;                   /* Type of event control block (see OS_EVENT_TYPE_???)      */
  165.     INT8U   OSEventGrp;                    /* Group corresponding to tasks waiting for event to occur  */
  166.     INT16U  OSEventCnt;                    /* Semaphore Count (not used if other EVENT type)           */
  167.     void   *OSEventPtr;                    /* Pointer to message or queue structure                    */
  168.     INT8U   OSEventTbl[OS_EVENT_TBL_SIZE]; /* List of tasks waiting for event to occur                 */
  169. } OS_EVENT;
  170. #endif
  171. /*
  172. *********************************************************************************************************
  173. *                                       EVENT FLAGS CONTROL BLOCK
  174. *********************************************************************************************************
  175. */
  176. #if (OS_VERSION >= 251) && (OS_FLAG_EN > 0) && (OS_MAX_FLAGS > 0)
  177. typedef struct {                            /* Event Flag Group                                        */
  178.     INT8U         OSFlagType;               /* Should be set to OS_EVENT_TYPE_FLAG                     */
  179.     void         *OSFlagWaitList;           /* Pointer to first NODE of task waiting on event flag     */
  180.     OS_FLAGS      OSFlagFlags;              /* 8, 16 or 32 bit flags                                   */
  181. } OS_FLAG_GRP;    
  182.     
  183.     
  184. typedef struct {                            /* Event Flag Wait List Node                               */
  185.     void         *OSFlagNodeNext;           /* Pointer to next     NODE in wait list                   */
  186.     void         *OSFlagNodePrev;           /* Pointer to previous NODE in wait list                   */
  187.     void         *OSFlagNodeTCB;            /* Pointer to TCB of waiting task                          */  
  188.     void         *OSFlagNodeFlagGrp;        /* Pointer to Event Flag Group                             */  
  189.     OS_FLAGS      OSFlagNodeFlags;          /* Event flag to wait on                                   */  
  190.     INT8U         OSFlagNodeWaitType;       /* Type of wait:                                           */
  191.                                             /*      OS_FLAG_WAIT_AND                                   */
  192.                                             /*      OS_FLAG_WAIT_ALL                                   */
  193.                                             /*      OS_FLAG_WAIT_OR                                    */
  194.                                             /*      OS_FLAG_WAIT_ANY                                   */
  195. } OS_FLAG_NODE;
  196. #endif
  197. /*
  198. *********************************************************************************************************
  199. *                                          MESSAGE MAILBOX DATA
  200. *********************************************************************************************************
  201. */
  202. #if OS_MBOX_EN > 0
  203. typedef struct {
  204.     void   *OSMsg;                         /* Pointer to message in mailbox                            */
  205.     INT8U   OSEventTbl[OS_EVENT_TBL_SIZE]; /* List of tasks waiting for event to occur                 */
  206.     INT8U   OSEventGrp;                    /* Group corresponding to tasks waiting for event to occur  */
  207. } OS_MBOX_DATA;
  208. #endif
  209. /*
  210. *********************************************************************************************************
  211. *                                     MEMORY PARTITION DATA STRUCTURES
  212. *********************************************************************************************************
  213. */
  214. #if (OS_MEM_EN > 0) && (OS_MAX_MEM_PART > 0)
  215. typedef struct {                       /* MEMORY CONTROL BLOCK                                         */
  216.     void   *OSMemAddr;                 /* Pointer to beginning of memory partition                     */
  217.     void   *OSMemFreeList;             /* Pointer to list of free memory blocks                        */
  218.     INT32U  OSMemBlkSize;              /* Size (in bytes) of each block of memory                      */
  219.     INT32U  OSMemNBlks;                /* Total number of blocks in this partition                     */
  220.     INT32U  OSMemNFree;                /* Number of memory blocks remaining in this partition          */
  221. } OS_MEM;
  222. typedef struct {
  223.     void   *OSAddr;                    /* Pointer to the beginning address of the memory partition     */
  224.     void   *OSFreeList;                /* Pointer to the beginning of the free list of memory blocks   */
  225.     INT32U  OSBlkSize;                 /* Size (in bytes) of each memory block                         */
  226.     INT32U  OSNBlks;                   /* Total number of blocks in the partition                      */
  227.     INT32U  OSNFree;                   /* Number of memory blocks free                                 */
  228.     INT32U  OSNUsed;                   /* Number of memory blocks used                                 */
  229. } OS_MEM_DATA;
  230. #endif
  231. /*$PAGE*/
  232. /*
  233. *********************************************************************************************************
  234. *                                    MUTUAL EXCLUSION SEMAPHORE DATA
  235. *********************************************************************************************************
  236. */
  237. #if OS_MUTEX_EN > 0
  238. typedef struct {
  239.     INT8U   OSEventTbl[OS_EVENT_TBL_SIZE];  /* List of tasks waiting for event to occur                */
  240.     INT8U   OSEventGrp;                     /* Group corresponding to tasks waiting for event to occur */
  241.     INT8U   OSValue;                        /* Mutex value (0 = used, 1 = available)                   */
  242.     INT8U   OSOwnerPrio;                    /* Mutex owner's task priority or 0xFF if no owner         */
  243.     INT8U   OSMutexPIP;                     /* Priority Inheritance Priority or 0xFF if no owner       */
  244. } OS_MUTEX_DATA;
  245. #endif
  246. /*
  247. *********************************************************************************************************
  248. *                                          MESSAGE QUEUE DATA
  249. *********************************************************************************************************
  250. */
  251. #if OS_Q_EN > 0
  252. typedef struct os_q {                   /* QUEUE CONTROL BLOCK                                         */
  253.     struct os_q   *OSQPtr;              /* Link to next queue control block in list of free blocks     */
  254.     void         **OSQStart;            /* Pointer to start of queue data                              */
  255.     void         **OSQEnd;              /* Pointer to end   of queue data                              */
  256.     void         **OSQIn;               /* Pointer to where next message will be inserted  in   the Q  */
  257.     void         **OSQOut;              /* Pointer to where next message will be extracted from the Q  */
  258.     INT16U         OSQSize;             /* Size of queue (maximum number of entries)                   */
  259.     INT16U         OSQEntries;          /* Current number of entries in the queue                      */
  260. } OS_Q;
  261. typedef struct {
  262.     void          *OSMsg;               /* Pointer to next message to be extracted from queue          */
  263.     INT16U         OSNMsgs;             /* Number of messages in message queue                         */
  264.     INT16U         OSQSize;             /* Size of message queue                                       */
  265.     INT8U          OSEventTbl[OS_EVENT_TBL_SIZE];  /* List of tasks waiting for event to occur         */
  266.     INT8U          OSEventGrp;          /* Group corresponding to tasks waiting for event to occur     */
  267. } OS_Q_DATA;
  268. #endif
  269. /*
  270. *********************************************************************************************************
  271. *                                           SEMAPHORE DATA
  272. *********************************************************************************************************
  273. */
  274. #if OS_SEM_EN > 0
  275. typedef struct {
  276.     INT16U  OSCnt;                          /* Semaphore count                                         */
  277.     INT8U   OSEventTbl[OS_EVENT_TBL_SIZE];  /* List of tasks waiting for event to occur                */
  278.     INT8U   OSEventGrp;                     /* Group corresponding to tasks waiting for event to occur */
  279. } OS_SEM_DATA;
  280. #endif
  281. /*
  282. *********************************************************************************************************
  283. *                                            TASK STACK DATA
  284. *********************************************************************************************************
  285. */
  286. #if OS_TASK_CREATE_EXT_EN > 0
  287. typedef struct {
  288.     INT32U  OSFree;                    /* Number of free bytes on the stack                            */
  289.     INT32U  OSUsed;                    /* Number of bytes used on the stack                            */
  290. } OS_STK_DATA;
  291. #endif
  292. /*$PAGE*/
  293. /*
  294. *********************************************************************************************************
  295. *                                          TASK CONTROL BLOCK
  296. *********************************************************************************************************
  297. */
  298. typedef struct os_tcb {
  299.     OS_STK        *OSTCBStkPtr;        /* Pointer to current top of stack                              */
  300. #if OS_TASK_CREATE_EXT_EN > 0
  301.     void          *OSTCBExtPtr;        /* Pointer to user definable data for TCB extension             */
  302.     OS_STK        *OSTCBStkBottom;     /* Pointer to bottom of stack                                   */
  303.     INT32U         OSTCBStkSize;       /* Size of task stack (in number of stack elements)             */
  304.     INT16U         OSTCBOpt;           /* Task options as passed by OSTaskCreateExt()                  */
  305.     INT16U         OSTCBId;            /* Task ID (0..65535)                                           */
  306. #endif
  307.     struct os_tcb *OSTCBNext;          /* Pointer to next     TCB in the TCB list                      */
  308.     struct os_tcb *OSTCBPrev;          /* Pointer to previous TCB in the TCB list                      */
  309. #if ((OS_Q_EN > 0) && (OS_MAX_QS > 0)) || (OS_MBOX_EN > 0) || (OS_SEM_EN > 0) || (OS_MUTEX_EN > 0)
  310.     OS_EVENT      *OSTCBEventPtr;      /* Pointer to event control block                               */
  311. #endif
  312. #if ((OS_Q_EN > 0) && (OS_MAX_QS > 0)) || (OS_MBOX_EN > 0)
  313.     void          *OSTCBMsg;           /* Message received from OSMboxPost() or OSQPost()              */
  314. #endif
  315. #if (OS_VERSION >= 251) && (OS_FLAG_EN > 0) && (OS_MAX_FLAGS > 0)
  316. #if OS_TASK_DEL_EN > 0
  317.     OS_FLAG_NODE  *OSTCBFlagNode;      /* Pointer to event flag node                                   */
  318. #endif    
  319.     OS_FLAGS       OSTCBFlagsRdy;      /* Event flags that made task ready to run                      */
  320. #endif
  321.     INT16U         OSTCBDly;           /* Nbr ticks to delay task or, timeout waiting for event        */
  322.     INT8U          OSTCBStat;          /* Task status                                                  */
  323.     INT8U          OSTCBPrio;          /* Task priority (0 == highest, 63 == lowest)                   */
  324.     INT8U          OSTCBX;             /* Bit position in group  corresponding to task priority (0..7) */
  325.     INT8U          OSTCBY;             /* Index into ready table corresponding to task priority        */
  326.     INT8U          OSTCBBitX;          /* Bit mask to access bit position in ready table               */
  327.     INT8U          OSTCBBitY;          /* Bit mask to access bit position in ready group               */
  328. #if OS_TASK_DEL_EN > 0
  329.     BOOLEAN        OSTCBDelReq;        /* Indicates whether a task needs to delete itself              */
  330. #endif
  331. } OS_TCB;
  332. /*$PAGE*/
  333. /*
  334. *********************************************************************************************************
  335. *                                            GLOBAL VARIABLES
  336. *********************************************************************************************************
  337. */
  338. OS_EXT  INT32U            OSCtxSwCtr;               /* Counter of number of context switches           */
  339. #if (OS_EVENT_EN > 0) && (OS_MAX_EVENTS > 0)
  340. OS_EXT  OS_EVENT         *OSEventFreeList;          /* Pointer to list of free EVENT control blocks    */
  341. OS_EXT  OS_EVENT          OSEventTbl[OS_MAX_EVENTS];/* Table of EVENT control blocks                   */
  342. #endif
  343. #if (OS_VERSION >= 251) && (OS_FLAG_EN > 0) && (OS_MAX_FLAGS > 0)
  344. OS_EXT  OS_FLAG_GRP       OSFlagTbl[OS_MAX_FLAGS];  /* Table containing event flag groups              */
  345. OS_EXT  OS_FLAG_GRP      *OSFlagFreeList;           /* Pointer to free list of event flag groups       */
  346. #endif
  347. #if OS_TASK_STAT_EN > 0
  348. OS_EXT  INT8S             OSCPUUsage;               /* Percentage of CPU used                          */
  349. OS_EXT  INT32U            OSIdleCtrMax;             /* Max. value that idle ctr can take in 1 sec.     */
  350. OS_EXT  INT32U            OSIdleCtrRun;             /* Val. reached by idle ctr at run time in 1 sec.  */
  351. OS_EXT  BOOLEAN           OSStatRdy;                /* Flag indicating that the statistic task is rdy  */
  352. OS_EXT  OS_STK            OSTaskStatStk[OS_TASK_STAT_STK_SIZE];      /* Statistics task stack          */
  353. #endif
  354. OS_EXT  INT8U             OSIntNesting;             /* Interrupt nesting level                         */
  355. OS_EXT  INT8U             OSIntExitY;
  356. OS_EXT  INT8U             OSLockNesting;            /* Multitasking lock nesting level                 */
  357. OS_EXT  INT8U             OSPrioCur;                /* Priority of current task                        */
  358. OS_EXT  INT8U             OSPrioHighRdy;            /* Priority of highest priority task               */
  359. OS_EXT  INT8U             OSRdyGrp;                        /* Ready list group                         */
  360. OS_EXT  INT8U             OSRdyTbl[OS_RDY_TBL_SIZE];       /* Table of tasks which are ready to run    */
  361. OS_EXT  BOOLEAN           OSRunning;                       /* Flag indicating that kernel is running   */
  362. OS_EXT  INT8U             OSTaskCtr;                       /* Number of tasks created                  */
  363. OS_EXT  volatile  INT32U  OSIdleCtr;                                 /* Idle counter                   */
  364. OS_EXT  OS_STK            OSTaskIdleStk[OS_TASK_IDLE_STK_SIZE];      /* Idle task stack                */
  365. OS_EXT  OS_TCB           *OSTCBCur;                        /* Pointer to currently running TCB         */
  366. OS_EXT  OS_TCB           *OSTCBFreeList;                   /* Pointer to list of free TCBs             */
  367. OS_EXT  OS_TCB           *OSTCBHighRdy;                    /* Pointer to highest priority TCB R-to-R   */
  368. OS_EXT  OS_TCB           *OSTCBList;                       /* Pointer to doubly linked list of TCBs    */
  369. OS_EXT  OS_TCB           *OSTCBPrioTbl[OS_LOWEST_PRIO + 1];/* Table of pointers to created TCBs        */
  370. OS_EXT  OS_TCB            OSTCBTbl[OS_MAX_TASKS + OS_N_SYS_TASKS];   /* Table of TCBs                  */
  371. #if (OS_MEM_EN > 0) && (OS_MAX_MEM_PART > 0)
  372. OS_EXT  OS_MEM           *OSMemFreeList;            /* Pointer to free list of memory partitions       */
  373. OS_EXT  OS_MEM            OSMemTbl[OS_MAX_MEM_PART];/* Storage for memory partition manager            */
  374. #endif
  375. #if (OS_Q_EN > 0) && (OS_MAX_QS > 0)
  376. OS_EXT  OS_Q             *OSQFreeList;              /* Pointer to list of free QUEUE control blocks    */
  377. OS_EXT  OS_Q              OSQTbl[OS_MAX_QS];        /* Table of QUEUE control blocks                   */
  378. #endif
  379. #if OS_TIME_GET_SET_EN > 0   
  380. OS_EXT  volatile  INT32U  OSTime;                   /* Current value of system time (in ticks)         */
  381. #endif
  382. extern  INT8U  const      OSMapTbl[];               /* Priority->Bit Mask lookup table                 */
  383. extern  INT8U  const      OSUnMapTbl[];             /* Priority->Index    lookup table                 */
  384. /*$PAGE*/
  385. /*
  386. *********************************************************************************************************
  387. *                                          FUNCTION PROTOTYPES
  388. *                                     (Target Independent Functions)
  389. *********************************************************************************************************
  390. */
  391. /*
  392. *********************************************************************************************************
  393. *                                         EVENT FLAGS MANAGEMENT
  394. *********************************************************************************************************
  395. */
  396. #if (OS_VERSION >= 251) && (OS_FLAG_EN > 0) && (OS_MAX_FLAGS > 0)
  397. #if OS_FLAG_ACCEPT_EN > 0
  398. OS_FLAGS      OSFlagAccept(OS_FLAG_GRP *pgrp, OS_FLAGS flags, INT8U wait_type, INT8U *err);
  399. #endif
  400. OS_FLAG_GRP  *OSFlagCreate(OS_FLAGS flags, INT8U *err);
  401. #if OS_FLAG_DEL_EN > 0
  402. OS_FLAG_GRP  *OSFlagDel(OS_FLAG_GRP *pgrp, INT8U opt, INT8U *err);
  403. #endif
  404. OS_FLAGS      OSFlagPend(OS_FLAG_GRP *pgrp, OS_FLAGS flags, INT8U wait_type, INT16U timeout, INT8U *err);
  405. OS_FLAGS      OSFlagPost(OS_FLAG_GRP *pgrp, OS_FLAGS flags, INT8U operation, INT8U *err);
  406. #if OS_FLAG_QUERY_EN > 0
  407. OS_FLAGS      OSFlagQuery(OS_FLAG_GRP *pgrp, INT8U *err);
  408. #endif
  409. #endif
  410. /*
  411. *********************************************************************************************************
  412. *                                        MESSAGE MAILBOX MANAGEMENT
  413. *********************************************************************************************************
  414. */
  415. #if OS_MBOX_EN > 0
  416. #if OS_MBOX_ACCEPT_EN > 0
  417. void         *OSMboxAccept(OS_EVENT *pevent);
  418. #endif
  419. OS_EVENT     *OSMboxCreate(void *msg);
  420. #if OS_MBOX_DEL_EN > 0
  421. OS_EVENT     *OSMboxDel(OS_EVENT *pevent, INT8U opt, INT8U *err);
  422. #endif
  423. void         *OSMboxPend(OS_EVENT *pevent, INT16U timeout, INT8U *err);
  424. #if OS_MBOX_POST_EN > 0
  425. INT8U         OSMboxPost(OS_EVENT *pevent, void *msg);
  426. #endif
  427. #if OS_MBOX_POST_OPT_EN > 0
  428. INT8U         OSMboxPostOpt(OS_EVENT *pevent, void *msg, INT8U opt);
  429. #endif
  430. #if OS_MBOX_QUERY_EN > 0
  431. INT8U         OSMboxQuery(OS_EVENT *pevent, OS_MBOX_DATA *pdata);
  432. #endif
  433. #endif
  434. /*
  435. *********************************************************************************************************
  436. *                                           MEMORY MANAGEMENT
  437. *********************************************************************************************************
  438. */
  439. #if (OS_MEM_EN > 0) && (OS_MAX_MEM_PART > 0)
  440. OS_MEM       *OSMemCreate(void *addr, INT32U nblks, INT32U blksize, INT8U *err);
  441. void         *OSMemGet(OS_MEM *pmem, INT8U *err);
  442. INT8U         OSMemPut(OS_MEM *pmem, void *pblk);
  443. #if OS_MEM_QUERY_EN > 0
  444. INT8U         OSMemQuery(OS_MEM *pmem, OS_MEM_DATA *pdata);
  445. #endif
  446. #endif
  447. /*
  448. *********************************************************************************************************
  449. *                                MUTUAL EXCLUSION SEMAPHORE MANAGEMENT
  450. *********************************************************************************************************
  451. */
  452. #if OS_MUTEX_EN > 0
  453. #if OS_MUTEX_ACCEPT_EN > 0
  454. INT8U         OSMutexAccept(OS_EVENT *pevent, INT8U *err);
  455. #endif
  456. OS_EVENT     *OSMutexCreate(INT8U prio, INT8U *err);
  457. #if OS_MUTEX_DEL_EN > 0
  458. OS_EVENT     *OSMutexDel(OS_EVENT *pevent, INT8U opt, INT8U *err);
  459. #endif
  460. void          OSMutexPend(OS_EVENT *pevent, INT16U timeout, INT8U *err);
  461. INT8U         OSMutexPost(OS_EVENT *pevent);
  462. #if OS_MUTEX_QUERY_EN > 0
  463. INT8U         OSMutexQuery(OS_EVENT *pevent, OS_MUTEX_DATA *pdata);
  464. #endif
  465. #endif
  466. /*$PAGE*/
  467. /*
  468. *********************************************************************************************************
  469. *                                         MESSAGE QUEUE MANAGEMENT
  470. *********************************************************************************************************
  471. */
  472. #if (OS_Q_EN > 0) && (OS_MAX_QS > 0)
  473. #if OS_Q_ACCEPT_EN > 0
  474. void         *OSQAccept(OS_EVENT *pevent);
  475. #endif
  476. OS_EVENT     *OSQCreate(void **start, INT16U size);
  477. #if OS_Q_DEL_EN > 0
  478. OS_EVENT     *OSQDel(OS_EVENT *pevent, INT8U opt, INT8U *err);
  479. #endif
  480. #if OS_Q_FLUSH_EN > 0
  481. INT8U         OSQFlush(OS_EVENT *pevent);
  482. #endif
  483. void         *OSQPend(OS_EVENT *pevent, INT16U timeout, INT8U *err);
  484. #if OS_Q_POST_EN > 0
  485. INT8U         OSQPost(OS_EVENT *pevent, void *msg);
  486. #endif
  487. #if OS_Q_POST_FRONT_EN > 0
  488. INT8U         OSQPostFront(OS_EVENT *pevent, void *msg);
  489. #endif
  490. #if OS_Q_POST_OPT_EN > 0
  491. INT8U         OSQPostOpt(OS_EVENT *pevent, void *msg, INT8U opt);
  492. #endif
  493. #if OS_Q_QUERY_EN > 0
  494. INT8U         OSQQuery(OS_EVENT *pevent, OS_Q_DATA *pdata);
  495. #endif
  496. #endif
  497. /*$PAGE*/
  498. /*
  499. *********************************************************************************************************
  500. *                                          SEMAPHORE MANAGEMENT
  501. *********************************************************************************************************
  502. */
  503. #if OS_SEM_EN > 0
  504. #if OS_SEM_ACCEPT_EN > 0
  505. INT16U        OSSemAccept(OS_EVENT *pevent);
  506. #endif
  507. OS_EVENT     *OSSemCreate(INT16U cnt);
  508. #if OS_SEM_DEL_EN > 0
  509. OS_EVENT     *OSSemDel(OS_EVENT *pevent, INT8U opt, INT8U *err);
  510. #endif
  511. void          OSSemPend(OS_EVENT *pevent, INT16U timeout, INT8U *err);
  512. INT8U         OSSemPost(OS_EVENT *pevent);
  513. #if OS_SEM_QUERY_EN > 0
  514. INT8U         OSSemQuery(OS_EVENT *pevent, OS_SEM_DATA *pdata);
  515. #endif
  516. #endif
  517. /*$PAGE*/
  518. /*
  519. *********************************************************************************************************
  520. *                                            TASK MANAGEMENT
  521. *********************************************************************************************************
  522. */
  523. #if OS_TASK_CHANGE_PRIO_EN > 0
  524. INT8U         OSTaskChangePrio(INT8U oldprio, INT8U newprio);
  525. #endif
  526. #if OS_TASK_CREATE_EN > 0
  527. INT8U         OSTaskCreate(void (*task)(void *pd), void *pdata, OS_STK *ptos, INT8U prio);
  528. #endif
  529. #if OS_TASK_CREATE_EXT_EN > 0
  530. INT8U         OSTaskCreateExt(void  (*task)(void *pd),
  531.                               void   *pdata,
  532.                               OS_STK *ptos,
  533.                               INT8U   prio,
  534.                               INT16U  id,
  535.                               OS_STK *pbos,
  536.                               INT32U  stk_size,
  537.                               void   *pext,
  538.                               INT16U  opt);
  539. #endif
  540. #if OS_TASK_DEL_EN > 0
  541. INT8U         OSTaskDel(INT8U prio);
  542. INT8U         OSTaskDelReq(INT8U prio);
  543. #endif
  544. #if OS_TASK_SUSPEND_EN > 0
  545. INT8U         OSTaskResume(INT8U prio);
  546. INT8U         OSTaskSuspend(INT8U prio);
  547. #endif
  548. #if OS_TASK_CREATE_EXT_EN > 0
  549. INT8U         OSTaskStkChk(INT8U prio, OS_STK_DATA *pdata);
  550. #endif
  551. #if OS_TASK_QUERY_EN > 0
  552. INT8U         OSTaskQuery(INT8U prio, OS_TCB *pdata);
  553. #endif
  554. /*$PAGE*/
  555. /*
  556. *********************************************************************************************************
  557. *                                            TIME MANAGEMENT
  558. *********************************************************************************************************
  559. */
  560. void          OSTimeDly(INT16U ticks);
  561. #if OS_TIME_DLY_HMSM_EN > 0
  562. INT8U         OSTimeDlyHMSM(INT8U hours, INT8U minutes, INT8U seconds, INT16U milli);
  563. #endif
  564. #if OS_TIME_DLY_RESUME_EN > 0
  565. INT8U         OSTimeDlyResume(INT8U prio);
  566. #endif
  567. #if OS_TIME_GET_SET_EN > 0
  568. INT32U        OSTimeGet(void);
  569. void          OSTimeSet(INT32U ticks);
  570. #endif
  571. void          OSTimeTick(void);
  572. /*
  573. *********************************************************************************************************
  574. *                                             MISCELLANEOUS
  575. *********************************************************************************************************
  576. */
  577. void          OSInit(void);
  578. void          OSIntEnter(void);
  579. void          OSIntExit(void);
  580. #if OS_SCHED_LOCK_EN > 0
  581. void          OSSchedLock(void);
  582. void          OSSchedUnlock(void);
  583. #endif
  584. void          OSStart(void);
  585. void          OSStatInit(void);
  586. INT16U        OSVersion(void);
  587. /*$PAGE*/
  588. /*
  589. *********************************************************************************************************
  590. *                                      INTERNAL FUNCTION PROTOTYPES
  591. *                            (Your application MUST NOT call these functions)
  592. *********************************************************************************************************
  593. */
  594. #if OS_TASK_DEL_EN > 0
  595. void          OS_Dummy(void);
  596. #endif
  597. #if ((OS_Q_EN > 0) && (OS_MAX_QS > 0)) || (OS_MBOX_EN > 0) || (OS_SEM_EN > 0) || (OS_MUTEX_EN > 0)
  598. INT8U         OS_EventTaskRdy(OS_EVENT *pevent, void *msg, INT8U msk);
  599. void          OS_EventTaskWait(OS_EVENT *pevent);
  600. void          OS_EventTO(OS_EVENT *pevent);
  601. void          OS_EventWaitListInit(OS_EVENT *pevent);
  602. #endif
  603. #if (OS_VERSION >= 251) && (OS_FLAG_EN > 0) && (OS_MAX_FLAGS > 0)
  604. void          OS_FlagInit(void);
  605. void          OS_FlagUnlink(OS_FLAG_NODE *pnode);
  606. #endif
  607. #if (OS_MEM_EN > 0) && (OS_MAX_MEM_PART > 0)
  608. void          OS_MemInit(void);
  609. #endif
  610. #if OS_Q_EN > 0
  611. void          OS_QInit(void);
  612. #endif
  613. void          OS_Sched(void);
  614. void          OS_TaskIdle(void *data);
  615. #if OS_TASK_STAT_EN > 0
  616. void          OS_TaskStat(void *data);
  617. #endif
  618. INT8U         OS_TCBInit(INT8U prio, OS_STK *ptos, OS_STK *pbos, INT16U id, INT32U stk_size, void *pext, INT16U opt);
  619. /*$PAGE*/
  620. /*
  621. *********************************************************************************************************
  622. *                                          FUNCTION PROTOTYPES
  623. *                                      (Target Specific Functions)
  624. *********************************************************************************************************
  625. */
  626. #if OS_VERSION >= 204
  627. void          OSInitHookBegin(void);
  628. void          OSInitHookEnd(void);
  629. #endif
  630. void          OSIntCtxSw(void);
  631. void          OSStartHighRdy(void);
  632. void          OSTaskCreateHook(OS_TCB *ptcb);
  633. void          OSTaskDelHook(OS_TCB *ptcb);
  634. #if OS_VERSION >= 251
  635. void          OSTaskIdleHook(void);
  636. #endif
  637. void          OSTaskStatHook(void);
  638. OS_STK       *OSTaskStkInit(void (*task)(void *pd), void *pdata, OS_STK *ptos, INT16U opt);
  639. void          OSTaskSwHook(void);
  640. #if OS_VERSION >= 204
  641. void          OSTCBInitHook(OS_TCB *ptcb);
  642. #endif
  643. void          OSTimeTickHook(void);
  644. /*
  645. *********************************************************************************************************
  646. *                                          FUNCTION PROTOTYPES
  647. *                                  (Compiler Specific ISR prototypes)
  648. *********************************************************************************************************
  649. */
  650. #ifndef OS_ISR_PROTO_EXT
  651. void          OSCtxSw(void);
  652. void          OSTickISR(void);
  653. #endif
  654. /*$PAGE*/
  655. /*
  656. *********************************************************************************************************
  657. *                                   LOOK FOR MISSING #define CONSTANTS
  658. *
  659. * This section is used to generate ERROR messages at compile time if certain #define constants are 
  660. * MISSING in OS_CFG.H.  This allows you to quickly determine the source of the error.
  661. *
  662. * You SHOULD NOT change this section UNLESS you would like to add more comments as to the source of the
  663. * compile time error.
  664. *********************************************************************************************************
  665. */
  666. /*
  667. *********************************************************************************************************
  668. *                                            EVENT FLAGS
  669. *********************************************************************************************************
  670. */
  671. #ifndef OS_FLAG_EN
  672. #error  "OS_CFG.H, Missing OS_FLAG_EN: Enable (1) or Disable (0) code generation for Event Flags"
  673. #else
  674.     #ifndef OS_MAX_FLAGS
  675.     #error  "OS_CFG.H, Missing OS_MAX_FLAGS: Max. number of Event Flag Groups in your application"
  676.     #else
  677.         #if     OS_MAX_FLAGS == 0
  678.         #error  "OS_CFG.H, OS_MAX_FLAGS must be > 0"
  679.         #endif
  680.         #if     OS_MAX_FLAGS > 255
  681.         #error  "OS_CFG.H, OS_MAX_FLAGS must be <= 255"
  682.         #endif
  683.     #endif
  684.     #ifndef OS_FLAG_WAIT_CLR_EN
  685.     #error  "OS_CFG.H, Missing OS_FLAG_WAIT_CLR_EN: Include code for Wait on Clear EVENT FLAGS"
  686.     #endif
  687.     #ifndef OS_FLAG_ACCEPT_EN
  688.     #error  "OS_CFG.H, Missing OS_FLAG_ACCEPT_EN: Include code for OSFlagAccept()"
  689.     #endif
  690.     #ifndef OS_FLAG_DEL_EN
  691.     #error  "OS_CFG.H, Missing OS_FLAG_DEL_EN: Include code for OSFlagDel()"
  692.     #endif
  693.     #ifndef OS_FLAG_QUERY_EN
  694.     #error  "OS_CFG.H, Missing OS_FLAG_QUERY_EN: Include code for OSFlagQuery()"
  695.     #endif
  696. #endif
  697. /*
  698. *********************************************************************************************************
  699. *                                           MESSAGE MAILBOXES
  700. *********************************************************************************************************
  701. */
  702. #ifndef OS_MBOX_EN
  703. #error  "OS_CFG.H, Missing OS_MBOX_EN: Enable (1) or Disable (0) code generation for MAILBOXES"
  704. #else
  705.     #ifndef OS_MBOX_ACCEPT_EN
  706.     #error  "OS_CFG.H, Missing OS_MBOX_ACCEPT_EN: Include code for OSMboxAccept()"
  707.     #endif
  708.     #ifndef OS_MBOX_DEL_EN
  709.     #error  "OS_CFG.H, Missing OS_MBOX_DEL_EN: Include code for OSMboxDel()"
  710.     #endif
  711.     #ifndef OS_MBOX_POST_EN
  712.     #error  "OS_CFG.H, Missing OS_MBOX_POST_EN: Include code for OSMboxPost()"
  713.     #endif
  714.     #ifndef OS_MBOX_POST_OPT_EN
  715.     #error  "OS_CFG.H, Missing OS_MBOX_POST_OPT_EN: Include code for OSMboxPostOpt()"
  716.     #endif
  717.     #ifndef OS_MBOX_QUERY_EN
  718.     #error  "OS_CFG.H, Missing OS_MBOX_QUERY_EN: Include code for OSMboxQuery()"
  719.     #endif
  720. #endif
  721. /*
  722. *********************************************************************************************************
  723. *                                           MEMORY MANAGEMENT
  724. *********************************************************************************************************
  725. */
  726. #ifndef OS_MEM_EN
  727. #error  "OS_CFG.H, Missing OS_MEM_EN: Enable (1) or Disable (0) code generation for MEMORY MANAGER"
  728. #else
  729.     #ifndef OS_MAX_MEM_PART
  730.     #error  "OS_CFG.H, Missing OS_MAX_MEM_PART: Max. number of memory partitions"
  731.     #else
  732.         #if     OS_MAX_MEM_PART == 0
  733.         #error  "OS_CFG.H, OS_MAX_MEM_PART must be > 0"
  734.         #endif
  735.         #if     OS_MAX_MEM_PART > 255
  736.         #error  "OS_CFG.H, OS_MAX_MEM_PART must be <= 255"
  737.         #endif
  738.     #endif
  739.     #ifndef OS_MEM_QUERY_EN
  740.     #error  "OS_CFG.H, Missing OS_MEM_QUERY_EN: Include code for OSMemQuery()"
  741.     #endif
  742. #endif
  743. /*
  744. *********************************************************************************************************
  745. *                                       MUTUAL EXCLUSION SEMAPHORES
  746. *********************************************************************************************************
  747. */
  748. #ifndef OS_MUTEX_EN
  749. #error  "OS_CFG.H, Missing OS_MUTEX_EN: Enable (1) or Disable (0) code generation for MUTEX"
  750. #else
  751.     #ifndef OS_MUTEX_ACCEPT_EN
  752.     #error  "OS_CFG.H, Missing OS_MUTEX_ACCEPT_EN: Include code for OSMutexAccept()"
  753.     #endif
  754.     #ifndef OS_MUTEX_DEL_EN
  755.     #error  "OS_CFG.H, Missing OS_MUTEX_DEL_EN: Include code for OSMutexDel()"
  756.     #endif
  757.     #ifndef OS_MUTEX_QUERY_EN
  758.     #error  "OS_CFG.H, Missing OS_MUTEX_QUERY_EN: Include code for OSMutexQuery()"
  759.     #endif
  760. #endif
  761. /*
  762. *********************************************************************************************************
  763. *                                              MESSAGE QUEUES
  764. *********************************************************************************************************
  765. */
  766. #ifndef OS_Q_EN
  767. #error  "OS_CFG.H, Missing OS_Q_EN: Enable (1) or Disable (0) code generation for QUEUES"
  768. #else
  769.     #ifndef OS_MAX_QS
  770.     #error  "OS_CFG.H, Missing OS_MAX_QS: Max. number of queue control blocks"
  771.     #else
  772.         #if     OS_MAX_QS == 0
  773.         #error  "OS_CFG.H, OS_MAX_QS must be > 0"
  774.         #endif
  775.         #if     OS_MAX_QS > 255
  776.         #error  "OS_CFG.H, OS_MAX_QS must be <= 255"
  777.         #endif
  778.     #endif
  779.     #ifndef OS_Q_ACCEPT_EN
  780.     #error  "OS_CFG.H, Missing OS_Q_ACCEPT_EN: Include code for OSQAccept()"
  781.     #endif
  782.     #ifndef OS_Q_DEL_EN
  783.     #error  "OS_CFG.H, Missing OS_Q_DEL_EN: Include code for OSQDel()"
  784.     #endif
  785.     #ifndef OS_Q_FLUSH_EN
  786.     #error  "OS_CFG.H, Missing OS_Q_FLUSH_EN: Include code for OSQFlush()"
  787.     #endif
  788.     #ifndef OS_Q_POST_EN
  789.     #error  "OS_CFG.H, Missing OS_Q_POST_EN: Include code for OSQPost()"
  790.     #endif
  791.     #ifndef OS_Q_POST_FRONT_EN
  792.     #error  "OS_CFG.H, Missing OS_Q_POST_FRONT_EN: Include code for OSQPostFront()"
  793.     #endif
  794.     #ifndef OS_Q_POST_OPT_EN
  795.     #error  "OS_CFG.H, Missing OS_Q_POST_OPT_EN: Include code for OSQPostOpt()"
  796.     #endif
  797.     #ifndef OS_Q_QUERY_EN
  798.     #error  "OS_CFG.H, Missing OS_Q_QUERY_EN: Include code for OSQQuery()"
  799.     #endif
  800. #endif
  801. /*
  802. *********************************************************************************************************
  803. *                                              SEMAPHORES
  804. *********************************************************************************************************
  805. */
  806. #ifndef OS_SEM_EN
  807. #error  "OS_CFG.H, Missing OS_SEM_EN: Enable (1) or Disable (0) code generation for SEMAPHORES"
  808. #else
  809.     #ifndef OS_SEM_ACCEPT_EN
  810.     #error  "OS_CFG.H, Missing OS_SEM_ACCEPT_EN: Include code for OSSemAccept()"
  811.     #endif
  812.     #ifndef OS_SEM_DEL_EN
  813.     #error  "OS_CFG.H, Missing OS_SEM_DEL_EN: Include code for OSSemDel()"
  814.     #endif
  815.     #ifndef OS_SEM_QUERY_EN
  816.     #error  "OS_CFG.H, Missing OS_SEM_QUERY_EN: Include code for OSSemQuery()"
  817.     #endif
  818. #endif
  819. /*
  820. *********************************************************************************************************
  821. *                                             TASK MANAGEMENT
  822. *********************************************************************************************************
  823. */
  824. #ifndef OS_MAX_TASKS
  825. #error  "OS_CFG.H, Missing OS_MAX_TASKS: Max. number of tasks in your application"
  826. #else
  827.     #if     OS_MAX_TASKS == 0
  828.     #error  "OS_CFG.H,         OS_MAX_TASKS must be >= 2"
  829.     #endif
  830.     #if     OS_MAX_TASKS > 63
  831.     #error  "OS_CFG.H,         OS_MAX_TASKS must be <= 63"
  832.     #endif
  833. #endif
  834. #ifndef OS_TASK_IDLE_STK_SIZE
  835. #error  "OS_CFG.H, Missing OS_TASK_IDLE_STK_SIZE: Idle task stack size"
  836. #endif
  837. #ifndef OS_TASK_STAT_EN
  838. #error  "OS_CFG.H, Missing OS_TASK_STAT_EN: Enable (1) or Disable(0) the statistics task"
  839. #endif
  840. #ifndef OS_TASK_STAT_STK_SIZE
  841. #error  "OS_CFG.H, Missing OS_TASK_STAT_STK_SIZE: Statistics task stack size"
  842. #endif
  843. #ifndef OS_TASK_CHANGE_PRIO_EN
  844. #error  "OS_CFG.H, Missing OS_TASK_CHANGE_PRIO_EN: Include code for OSTaskChangePrio()"
  845. #endif
  846. #ifndef OS_TASK_CREATE_EN
  847. #error  "OS_CFG.H, Missing OS_TASK_CREATE_EN: Include code for OSTaskCreate()"
  848. #endif
  849. #ifndef OS_TASK_CREATE_EXT_EN
  850. #error  "OS_CFG.H, Missing OS_TASK_CREATE_EXT_EN: Include code for OSTaskCreateExt()"
  851. #endif
  852. #ifndef OS_TASK_DEL_EN
  853. #error  "OS_CFG.H, Missing OS_TASK_DEL_EN: Include code for OSTaskDel()"
  854. #endif
  855. #ifndef OS_TASK_SUSPEND_EN
  856. #error  "OS_CFG.H, Missing OS_TASK_SUSPEND_EN: Include code for OSTaskSuspend() and OSTaskResume()"
  857. #endif
  858. #ifndef OS_TASK_QUERY_EN
  859. #error  "OS_CFG.H, Missing OS_TASK_QUERY_EN: Include code for OSTaskQuery()"
  860. #endif
  861. /*
  862. *********************************************************************************************************
  863. *                                             TIME MANAGEMENT
  864. *********************************************************************************************************
  865. */
  866. #ifndef OS_TICKS_PER_SEC
  867. #error  "OS_CFG.H, Missing OS_TICKS_PER_SEC: Sets the number of ticks in one second"
  868. #endif
  869. #ifndef OS_TIME_DLY_HMSM_EN
  870. #error  "OS_CFG.H, Missing OS_TIME_DLY_HMSM_EN: Include code for OSTimeDlyHMSM()"
  871. #endif
  872. #ifndef OS_TIME_DLY_RESUME_EN
  873. #error  "OS_CFG.H, Missing OS_TIME_DLY_RESUME_EN: Include code for OSTimeDlyResume()"
  874. #endif
  875. #ifndef OS_TIME_GET_SET_EN
  876. #error  "OS_CFG.H, Missing OS_TIME_GET_SET_EN: Include code for OSTimeGet() and OSTimeSet()"
  877. #endif
  878. /*
  879. *********************************************************************************************************
  880. *                                            MISCELLANEOUS
  881. *********************************************************************************************************
  882. */
  883. #ifndef OS_MAX_EVENTS
  884. #error  "OS_CFG.H, Missing OS_MAX_EVENTS: Max. number of event control blocks in your application"
  885. #else
  886.     #if     OS_MAX_EVENTS == 0
  887.     #error  "OS_CFG.H, OS_MAX_EVENTS must be > 0"
  888.     #endif
  889.     #if     OS_MAX_EVENTS > 255
  890.     #error  "OS_CFG.H, OS_MAX_EVENTS must be <= 255"
  891.     #endif
  892. #endif
  893. #ifndef OS_LOWEST_PRIO
  894. #error  "OS_CFG.H, Missing OS_LOWEST_PRIO: Defines the lowest priority that can be assigned"
  895. #endif
  896. #ifndef OS_ARG_CHK_EN
  897. #error  "OS_CFG.H, Missing OS_ARG_CHK_EN: Enable (1) or Disable (0) argument checking"
  898. #endif
  899. #ifndef OS_CPU_HOOKS_EN
  900. #error  "OS_CFG.H, Missing OS_CPU_HOOKS_EN: uC/OS-II hooks are found in the processor port files when 1"
  901. #endif
  902. #ifndef OS_SCHED_LOCK_EN
  903. #error  "OS_CFG.H, Missing OS_SCHED_LOCK_EN: Include code for OSSchedLock() and OSSchedUnlock()"
  904. #endif