/*
************************************************************************************************************************
*                                                      uC/OS-III
*                                                 The Real-Time Kernel
*
*                                  (c) Copyright 2009-2011; Micrium, Inc.; Weston, FL
*                           All rights reserved.  Protected by international copyright laws.
*
*                                                  CONFIGURATION FILE
*
* File    : OS_CFG.H
* By      : JJL
* Version : V3.02.00
*
* LICENSING TERMS:
* ---------------
*           uC/OS-III is provided in source form for FREE short-term evaluation, for educational use or 
*           for peaceful research.  If you plan or intend to use uC/OS-III in a commercial application/
*           product then, you need to contact Micrium to properly license uC/OS-III for its use in your 
*           application/product.   We provide ALL the source code for your convenience and to help you 
*           experience uC/OS-III.  The fact that the source is provided does NOT mean that you can use 
*           it commercially without paying a licensing fee.
*
*           Knowledge of the source code may NOT be used to develop a similar product.
*
*           Please help us continue to provide the embedded community with the finest software available.
*           Your honesty is greatly appreciated.
*
*           You can contact us at www.micrium.com, or by phone at +1 (954) 217-2036.
************************************************************************************************************************
*/

#ifndef OS_CFG_H
#define OS_CFG_H

                                             /* ---------------------------- MISCELLANEOUS -------------------------- */
#define OS_CFG_APP_HOOKS_EN             0u   //使能/禁用钩子函数
#define OS_CFG_ARG_CHK_EN               1u   //使能/禁用参数检测
#define OS_CFG_CALLED_FROM_ISR_CHK_EN   1u   //使能/禁用检测中断中非法调用功能
#define OS_CFG_DBG_EN                   1u   //使能/禁用调试代码和变量                                     
#define OS_CFG_ISR_POST_DEFERRED_EN     1u   //使能/禁用中断延迟发布
#define OS_CFG_OBJ_TYPE_CHK_EN          1u   //使能/禁用对象类型检测            
#define OS_CFG_TS_EN                    1u   //使能/禁用时间戳
																						 /* ---------------------------- MISCELLANEOUS -------------------------- */

#define OS_CFG_PEND_MULTI_EN            1u   /* Enable (1) or Disable (0) code generation for multi-pend feature      */

#define OS_CFG_PRIO_MAX                64u   /* 定义优先级的最大值 (see OS_PRIO data type) */

#define OS_CFG_SCHED_LOCK_TIME_MEAS_EN  0u   /* Include code to measure scheduler lock time                           */
#define OS_CFG_SCHED_ROUND_ROBIN_EN     1u   //使能/禁用时间片轮转调度 
#define OS_CFG_STK_SIZE_MIN            64u   /* Minimum allowable task stack size                                     */


                                             /* ----------------------------- EVENT FLAGS --------------------------- */
#define OS_CFG_FLAG_EN                  0u   //使能/禁用事件标志组
#define OS_CFG_FLAG_DEL_EN              0u   //使能/禁用 OSFlagDel() 函数
#define OS_CFG_FLAG_MODE_CLR_EN         0u   //使能/禁用标志位清0触发模式
#define OS_CFG_FLAG_PEND_ABORT_EN       0u   //使能/禁用 OSFlagPendAbort() 函数


                                             /* -------------------------- MEMORY MANAGEMENT ------------------------ */
#define OS_CFG_MEM_EN                   1u   /* Enable (1) or Disable (0) code generation for MEMORY MANAGER          */


                                             /* --------------------- MUTUAL EXCLUSION SEMAPHORES ------------------- */
#define OS_CFG_MUTEX_EN                 0u   //使能或禁用互斥信号量
#define OS_CFG_MUTEX_DEL_EN             0u   //使能或禁用 OSMutexDel() 函数 
#define OS_CFG_MUTEX_PEND_ABORT_EN      0u   //使能或禁用 OSMutexPendAbort() 函数 


                                             /* --------------------------- MESSAGE QUEUES -------------------------- */
#define OS_CFG_Q_EN                     1u   //使能/禁用消息队列
#define OS_CFG_Q_DEL_EN                 0u   //使能或禁用 OSQDel() 函数
#define OS_CFG_Q_FLUSH_EN               0u   //使能或禁用 OSQFlush() 函数
#define OS_CFG_Q_PEND_ABORT_EN          0u   //使能或禁用 OSQPendAbort() 函数


                                             /* ----------------------------- SEMAPHORES ---------------------------- */
#define OS_CFG_SEM_EN                   1u   //使能或禁用多值信号量
#define OS_CFG_SEM_DEL_EN               0u   //使能或禁用 OSSemDel() 函数 
#define OS_CFG_SEM_PEND_ABORT_EN        0u   //使能或禁用 OSSemPendAbort() 函数
#define OS_CFG_SEM_SET_EN               0u   //使能或禁用 OSSemSet() 函数

                                             /* -------------------------- TASK MANAGEMENT -------------------------- */
#define OS_CFG_STAT_TASK_EN             1u   /* 使能或禁用 OS_StatTask() 统计任务函数                			            */
#define OS_CFG_STAT_TASK_STK_CHK_EN     1u   /* Check task stacks from statistic task                                 */

#define OS_CFG_TASK_CHANGE_PRIO_EN      1u   /* Include code for OSTaskChangePrio()                                   */
#define OS_CFG_TASK_DEL_EN              1u   /* Include code for OSTaskDel()                                          */
#define OS_CFG_TASK_Q_EN                1u   /* Include code for OSTaskQXXXX()                                        */
#define OS_CFG_TASK_Q_PEND_ABORT_EN     1u   /* Include code for OSTaskQPendAbort()                                   */
#define OS_CFG_TASK_PROFILE_EN          1u   /* Include variables in OS_TCB for profiling                             */
#define OS_CFG_TASK_REG_TBL_SIZE        1u   //任务寄存器个数 
#define OS_CFG_TASK_SEM_PEND_ABORT_EN   1u   /* Include code for OSTaskSemPendAbort()                                 */
#define OS_CFG_TASK_SUSPEND_EN          1u   //使能/禁用函数 OSTaskSuspend() 和 OSTaskResume()  


                                             /* -------------------------- TIME MANAGEMENT -------------------------- */
#define OS_CFG_TIME_DLY_HMSM_EN         1u   //使能/禁用 OSTimeDlyHMSM() 函数
#define OS_CFG_TIME_DLY_RESUME_EN       0u   //使能/禁用 OSTimeDlyResume() 函数

                                             /* ------------------------- TIMER MANAGEMENT -------------------------- */
#define OS_CFG_TMR_EN                   1u   //使能/禁用软件定时器
#define OS_CFG_TMR_DEL_EN               1u   //使能/禁用 OSTmrDel() 函数

#endif
