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

📄 os-task-switch._h

📁 ucos-ii-at90S-icc-avr
💻 _H
字号:

//定义全局变量和marcos
#ifdef   OS_GLOBALS
#define  OS_EXT
#else
#define  OS_EXT  extern
#endif

#ifndef  FALSE
#define  FALSE                     0
#endif

#ifndef  TRUE
#define  TRUE                      1
#endif

/* TASK STATUS (Bit definition for OSTCBStat)                   */
#define  OS_STAT_RDY            0x01   /* Ready to run                                                 */

/*
*********************************************************************************************************
*                                              ERROR CODES
*********************************************************************************************************
*/
#define OS_NO_ERR                 0
#define OSERR_PRIO_INVALID		  1
#define OSERR_TCB_INVALID		  2
#define OSERR_PRIO_EXIST		  3

//定义task
typedef struct os_tcb {
    OS_STK        *OSTCBStkPtr;        /* Pointer to current top of stack                              */
    INT16U         OSTCBDly;           /* Nbr ticks to delay task or, timeout waiting for event        */
    INT8U          OSTCBStat;          /* Task status                                                  */
    INT8U          OSTCBPrio;          /* Task priority (0 == highest, 63 == lowest)                   */
} OS_TCB;


void        OSInit(void);
INT8U       OSTaskCreate(OS_TCB *ptcb,void (*task)(void *pd), void *pdata, OS_STK *ptos,INT16U stk_size, INT8U prio);
OS_STK *	OSTaskStkInit (void (*task)(void *pd),void *pdata, OS_STK *ptos, INT16U stk_size);
INT8U       OSTCBInit(OS_TCB *ptcb,INT8U prio, OS_STK *ptos,INT16U stk_size);
/*return ready task*/
INT8U		OSGetPrioRdy(void);

void        OSSched(void);

void 		OSStart(void);

void 		OSTimeDly (INT16U ticks);

void        OSStartHighRdy(void);

void        OSCtxSw(void);

void        OSIntCtxSw(void);

void OSDebug(INT8U v);

/* when something error,call OSError*/
#if OS_STRICT
void OSError(INT8U err);
#endif

/*task tcb pointers list*/
OS_EXT  BOOLEAN      OSRunning;                       /* Flag indicating that kernel is running        */

#define OS_TASK_COUNT (OS_LOWEST_PRIO+1)
OS_EXT  OS_TCB *OSpTCBList[OS_TASK_COUNT];

OS_EXT  INT8U        OSIntNesting;             /* Interrupt nesting level                              */

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

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

OS_EXT  OS_TCB      *OSTCBCur;                        /* Pointer to currently running TCB              */
OS_EXT  OS_TCB      *OSTCBHighRdy;                    /* Pointer to highest priority TCB ready to run  */

⌨️ 快捷键说明

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