📄 linos.h.bak
字号:
#ifndef LINOS_H
#define LINOS_H
#include "..\cpu\os_cpu.h"
#include "..\cpu\os_cfg.h"
#define OS_VERSION 100u //equ ucosii 270u
#ifdef OS_GLOBALS
#define OS_EXT
#else
#define OS_EXT extern
#endif
/*----------------------------------------------------------------------------*/
/* System var */
/*----------------------------------------------------------------------------*/
#if OS_TIME_GET_SET_EN>0 //Config:OS_TIME_GET_SET_EN
OS_EXT volatile INT32U OSTime; //系统Tick
#endif
OS_EXT INT32U OSCtxSwCtr; //任务切换计数
OS_EXT INT8U OSIntNesting; //中断嵌套计数
OS_EXT INT8U OSLockNesting; //中断锁定调度计数
OS_EXT BOOLEAN OSRunning; //系统运行标志
extern INT8U const OSMapTbl[8]; //优先级位表
extern INT8U const OSUnMapTbl[256]; //优先级索引表
void OSInit(void); //系统初始化程序
INT8U OS_TCBInit(INT8U prio,OS_STK *ptos); //任务产生TCB初始化
void OS_Sched(void); //任务调度程序
/*----------------------------------------------------------------------------*/
/* IDL Task var */
/*----------------------------------------------------------------------------*/
OS_EXT volatile INT32U OSIdleCtr; //IDL任务运行计数
OS_EXT OS_STK OSTaskIdleStk[OS_TASK_IDLE_STK_SIZE]; //IDL 任务堆栈,Config:OS_TASK_IDLE_STK_SIZE
void OS_TaskIdle(void *p_arg);
/*----------------------------------------------------------------------------*/
/* TASK TCB */
/*----------------------------------------------------------------------------*/
#define OS_PRIO_SELF 0xFF //表示当前任务优先级
#if OS_TASK_STAT_EN>0 //Config:OS_TASK_STAT_EN
#define OS_N_SYS_TASKS 2 //系统任务数:IDL,STAT
#else
#define OS_N_SYS_TASKS 1 //系统任务书:IDL
#endif
#define OS_RDY_TBL_SIZE ((OS_LOWEST_PRIO>>3)+1) //就绪表大小,Config:OS_LOWEST_PRIO
//任务状态值
#define OS_STAT_RDY 0x00 //就绪状态
#define OS_STAT_SEM 0x01 //等待信号量状态
#define OS_STAT_MBOX 0x02 //等待油箱状态
#define OS_STAT_Q 0x04 //等待队列状态
#define OS_STAT_SUSPEND 0x08 //挂起状态
#define OS_STAT_MUTEX 0x10 //等待互拆信号量状态
#define OS_STAT_FLAG 0x20 //等待事件标志状态
typedef struct os_tcb
{
OS_STK *OSTCBStkPtr; //堆栈当前指针
struct os_tcb *OSTCBNext; //指向下一个TCB
struct os_tcb *OSTCBPrev; //指向前一个TCB
INT16U OSTCBDly; //延时等待
INT8U OSTCBStat; //任务状态
INT8U OSTCBPrio; //任务优先级
INT8U OSTCBX; //用于快速访问就绪表:OSRdyTbl数组值中的位
INT8U OSTCBBitX; //用于快速访问就绪表:OSRdyTbl数组值中位的位码
INT8U OSTCBY; //用于快速访问就绪表:OSRdyTbl数组小标
INT8U OSTCBBitY; //用于快速访问就绪表:OSRdyTbl数组小标的位码
}OS_TCB;
OS_EXT INT8U OSTaskCtr; //任务产生计数
OS_EXT INT8U OSPrioCur; //当前任务优先级
OS_EXT INT8U OSPrioHighRdy; //就绪任务最高优先级
OS_EXT INT8U OSRdyGrp; //就绪组清单
OS_EXT INT8U OSRdyTbl[OS_RDY_TBL_SIZE]; //就绪表
OS_EXT OS_TCB *OSTCBCur; //指向当前任务
OS_EXT OS_TCB *OSTCBFreeList; //指向空的TCBS列表
OS_EXT OS_TCB *OSTCBHighRdy; //指向高优先就绪任务
OS_EXT OS_TCB *OSTCBList; //指向TCBS列表
OS_EXT OS_TCB *OSTCBPrioTbl[OS_LOWEST_PRIO+1]; //TCBS优先级指针连表,Config:OS_LOWEST_PRIO
OS_EXT OS_TCB OSTCBTbl[OS_MAX_TASKS+OS_N_SYS_TASKS]; //TCBS表,Config:OS_MAX_TASKS
INT8U OSTaskCreate(void (*task)(void *pd),void *p_arg,OS_STK *ptos,INT8U prio); //任务产生函数
OS_STK *OSTaskStkInit(void (*task)(void *pd),void *p_arg,OS_STK *ptos,INT16U opt); //任务堆栈初始化函数
#if OS_TASK_CHANGE_PRIO_EN > 0
INT8U OSTaskChangePrio(INT8U oldprio,INT8U newprio); //任务优先级改变函数
#endif
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -