📄 os.h
字号:
#define OS_OBJ_TYPE_Q (OS_OBJ_TYPE)CPU_TYPE_CREATE('Q', 'U', 'E', 'U')
#define OS_OBJ_TYPE_SEM (OS_OBJ_TYPE)CPU_TYPE_CREATE('S', 'E', 'M', 'A')
#define OS_OBJ_TYPE_TASK_MSG (OS_OBJ_TYPE)CPU_TYPE_CREATE('T', 'M', 'S', 'G')
#define OS_OBJ_TYPE_TASK_SIGNAL (OS_OBJ_TYPE)CPU_TYPE_CREATE('T', 'S', 'I', 'G')
#define OS_OBJ_TYPE_TICK (OS_OBJ_TYPE)CPU_TYPE_CREATE('T', 'I', 'C', 'K')
#define OS_OBJ_TYPE_TMR (OS_OBJ_TYPE)CPU_TYPE_CREATE('T', 'M', 'R', ' ')
/*
========================================================================================================================
* Possible values for 'opt' argument
========================================================================================================================
*/
#define OS_OPT_NONE (OS_OPT)(0x0000u)
/*
------------------------------------------------------------------------------------------------------------------------
* DELETE OPTIONS
------------------------------------------------------------------------------------------------------------------------
*/
#define OS_OPT_DEL_NO_PEND (OS_OPT)(0x0000u)
#define OS_OPT_DEL_ALWAYS (OS_OPT)(0x0001u)
/*
------------------------------------------------------------------------------------------------------------------------
* PEND OPTIONS
------------------------------------------------------------------------------------------------------------------------
*/
#define OS_OPT_PEND_FLAG_MASK (OS_OPT)(0x000Fu)
#define OS_OPT_PEND_FLAG_CLR_ALL (OS_OPT)(0x0001u) /* Wait for ALL the bits specified to be CLR */
#define OS_OPT_PEND_FLAG_CLR_AND (OS_OPT)(0x0001u)
#define OS_OPT_PEND_FLAG_CLR_ANY (OS_OPT)(0x0002u) /* Wait for ANY of the bits specified to be CLR */
#define OS_OPT_PEND_FLAG_CLR_OR (OS_OPT)(0x0002u)
#define OS_OPT_PEND_FLAG_SET_ALL (OS_OPT)(0x0004u) /* Wait for ALL the bits specified to be SET */
#define OS_OPT_PEND_FLAG_SET_AND (OS_OPT)(0x0004u)
#define OS_OPT_PEND_FLAG_SET_ANY (OS_OPT)(0x0008u) /* Wait for ANY of the bits specified to be SET */
#define OS_OPT_PEND_FLAG_SET_OR (OS_OPT)(0x0008u)
#define OS_OPT_PEND_FLAG_CONSUME (OS_OPT)(0x0100u) /* Consume the flags if condition(s) satisfied */
#define OS_OPT_PEND_BLOCKING (OS_OPT)(0x0000u)
#define OS_OPT_PEND_NON_BLOCKING (OS_OPT)(0x8000u)
/*
------------------------------------------------------------------------------------------------------------------------
* PEND ABORT OPTIONS
------------------------------------------------------------------------------------------------------------------------
*/
#define OS_OPT_PEND_ABORT_1 (OS_OPT)(0x0000u) /* Pend abort a single waiting task */
#define OS_OPT_PEND_ABORT_ALL (OS_OPT)(0x0100u) /* Pend abort ALL tasks waiting */
/*
------------------------------------------------------------------------------------------------------------------------
* POST OPTIONS
------------------------------------------------------------------------------------------------------------------------
*/
#define OS_OPT_POST_NONE (OS_OPT)(0x0000u)
#define OS_OPT_POST_FLAG_SET (OS_OPT)(0x0000u)
#define OS_OPT_POST_FLAG_CLR (OS_OPT)(0x0001u)
#define OS_OPT_POST_FIFO (OS_OPT)(0x0000u) /* Default is to post FIFO */
#define OS_OPT_POST_LIFO (OS_OPT)(0x0010u) /* Post to highest priority task waiting */
#define OS_OPT_POST_1 (OS_OPT)(0x0000u) /* Post message to highest priority task waiting */
#define OS_OPT_POST_ALL (OS_OPT)(0x0200u) /* Broadcast message to ALL tasks waiting */
#define OS_OPT_POST_NO_SCHED (OS_OPT)(0x8000u) /* Do not call the scheduler if this is selected */
/*
------------------------------------------------------------------------------------------------------------------------
* TASK OPTIONS
------------------------------------------------------------------------------------------------------------------------
*/
#define OS_OPT_TASK_NONE (OS_OPT)(0x0000u) /* No option selected */
#define OS_OPT_TASK_STK_CHK (OS_OPT)(0x0001u) /* Enable stack checking for the task */
#define OS_OPT_TASK_STK_CLR (OS_OPT)(0x0002u) /* Clear the stack when the task is create */
#define OS_OPT_TASK_SAVE_FP (OS_OPT)(0x0004u) /* Save the contents of any floating-point registers */
/*
------------------------------------------------------------------------------------------------------------------------
* TIME OPTIONS
------------------------------------------------------------------------------------------------------------------------
*/
#define OS_OPT_TIME_DLY DEF_BIT_NONE
#define OS_OPT_TIME_TIMEOUT ((OS_OPT)DEF_BIT_01)
#define OS_OPT_TIME_MATCH ((OS_OPT)DEF_BIT_02)
#define OS_OPT_TIME_PERIODIC ((OS_OPT)DEF_BIT_03)
#define OS_OPT_TIME_HMSM_STRICT ((OS_OPT)DEF_BIT_NONE)
#define OS_OPT_TIME_HMSM_NON_STRICT ((OS_OPT)DEF_BIT_04)
#define OS_OPT_TIME_MASK ((OS_OPT)(OS_OPT_TIME_DLY | \
OS_OPT_TIME_TIMEOUT | \
OS_OPT_TIME_PERIODIC | \
OS_OPT_TIME_MATCH))
#define OS_OPT_TIME_OPTS_MASK (OS_OPT_TIME_DLY | \
OS_OPT_TIME_TIMEOUT | \
OS_OPT_TIME_PERIODIC | \
OS_OPT_TIME_MATCH | \
OS_OPT_TIME_HMSM_NON_STRICT)
/*
------------------------------------------------------------------------------------------------------------------------
* TIMER OPTIONS
------------------------------------------------------------------------------------------------------------------------
*/
#define OS_OPT_TMR_NONE (OS_OPT)(0u) /* No option selected */
#define OS_OPT_TMR_ONE_SHOT (OS_OPT)(1u) /* Timer will not auto restart when it expires */
#define OS_OPT_TMR_PERIODIC (OS_OPT)(2u) /* Timer will auto restart when it expires */
#define OS_OPT_TMR_CALLBACK (OS_OPT)(3u) /* OSTmrStop() option to call 'callback' w/ timer arg */
#define OS_OPT_TMR_CALLBACK_ARG (OS_OPT)(4u) /* OSTmrStop() option to call 'callback' w/ new arg */
/*
------------------------------------------------------------------------------------------------------------------------
* TIMER STATES
------------------------------------------------------------------------------------------------------------------------
*/
#define OS_TMR_STATE_UNUSED (OS_STATE)(0u)
#define OS_TMR_STATE_STOPPED (OS_STATE)(1u)
#define OS_TMR_STATE_RUNNING (OS_STATE)(2u)
#define OS_TMR_STATE_COMPLETED (OS_STATE)(3u)
/*
------------------------------------------------------------------------------------------------------------------------
* PRIORITY
------------------------------------------------------------------------------------------------------------------------
*/
/* Dflt prio to init task TCB */
#define OS_PRIO_INIT (OS_PRIO)(OS_CFG_PRIO_MAX)
/*
------------------------------------------------------------------------------------------------------------------------
* TIMER TICK THRESHOLDS
------------------------------------------------------------------------------------------------------------------------
*/
/* Threshold to init previous tick time */
#define OS_TICK_TH_INIT (OS_TICK)(DEF_BIT ((sizeof(OS_TICK) * DEF_OCTET_NBR_BITS) - 1u))
/* Threshold to check if tick time already ready */
#define OS_TICK_TH_RDY (OS_TICK)(DEF_BIT_FIELD(((sizeof(OS_TICK) * DEF_OCTET_NBR_BITS) / 2u), \
((sizeof(OS_TICK) * DEF_OCTET_NBR_BITS) / 2u)))
/*$PAGE*/
/*
************************************************************************************************************************
************************************************************************************************************************
* E N U M E R A T I O N S
************************************************************************************************************************
************************************************************************************************************************
*/
/*
------------------------------------------------------------------------------------------------------------------------
* ERROR CODES
------------------------------------------------------------------------------------------------------------------------
*/
typedef enum os_err {
OS_ERR_NONE = 0u,
OS_ERR_A = 10000u,
OS_ERR_ACCEPT_ISR = 10001u,
OS_ERR_B = 11000u,
OS_ERR_C = 12000u,
OS_ERR_CREATE_ISR = 12001u,
OS_ERR_D = 13000u,
OS_ERR_DEL_ISR = 13001u,
OS_ERR_E = 14000u,
OS_ERR_F = 15000u,
OS_ERR_FATAL_RETURN = 15001u,
OS_ERR_FLAG_GRP_DEPLETED = 15101u,
OS_ERR_FLAG_NOT_RDY = 15102u,
OS_ERR_FLAG_PEND_OPT = 15103u,
OS_ERR_FLUSH_ISR = 15104u,
OS_ERR_G = 16000u,
OS_ERR_H = 17000u,
OS_ERR_I = 18000u,
OS_ERR_ILLEGAL_CREATE_RUN_TIME = 18001u,
OS_ERR_INT_Q = 18002u,
OS_ERR_INT_Q_FULL = 18003u,
OS_ERR_INT_Q_SIZE = 18004u,
OS_ERR_J = 19000u,
OS_ERR_K = 20000u,
OS_ERR_L = 21000u,
OS_ERR_LOCK_NESTING_OVF = 21001u,
OS_ERR_M = 22000u,
OS_ERR_MEM_CREATE_ISR = 22201u,
OS_ERR_MEM_FULL = 22202u,
OS_ERR_MEM_INVALID_P_ADDR = 22203u,
OS_ERR_MEM_INVALID_BLKS = 22204u,
OS_ERR_MEM_INVALID_PART = 22205u,
OS_ERR_MEM_INVALID_P_BLK = 22206u,
OS_ERR_MEM_INVALID_P_MEM = 22207u,
OS_ERR_MEM_INVALID_P_DATA = 22208u,
OS_ERR_MEM_INVALID_SIZE = 22209u,
OS_ERR_MEM_NO_FREE_BLKS = 22210u,
OS_ERR_MSG_POOL_EMPTY = 22301u,
OS_ERR_MSG_POOL_NULL_PTR = 22302u,
OS_ERR_MUTEX_NOT_OWNER = 22401u,
OS_ERR_MUTEX_OWNER = 22402u,
OS_ERR_MUTEX_NESTING = 22403u,
OS_ERR_N = 23000u,
OS_ERR_NAME = 23001u,
OS_ERR_O = 24000u,
OS_ERR_OBJ_CREATED = 24001u,
OS_ERR_OBJ_DEL = 24002u,
OS_ERR_OBJ_PTR_NULL = 24003u,
OS_ERR_OBJ_TYPE = 24004u,
OS_ERR_OPT_INVALID = 24101u,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -