📄 ucos_ii.h
字号:
INT8U OSTCBX; //任务控制快所在X位置
INT8U OSTCBY; //任务控制块所在的Y位置
INT8U OSTCBBitX; //任务控制块所在X位置的X位
INT8U OSTCBBitY; //任务控制块所在的Y位置的Y位
#if OS_TASK_DEL_EN //若允许任务删除功能
BOOLEAN OSTCBDelReq; //任务请求任务标志
#endif
} OS_TCB;
/*$PAGE*/
/*
*********************************************************************************************************
* GLOBAL VARIABLES
*********************************************************************************************************
*/
OS_EXT INT32U OSCtxSwCtr; //任务切换计数变量
#if (OS_MAX_EVENTS >= 2) //若事件大于2个事件
OS_EXT OS_EVENT *OSEventFreeList; //释放的事件列表
OS_EXT OS_EVENT OSEventTbl[OS_MAX_EVENTS];//事件表
#endif
OS_EXT INT32U OSIdleCtr; //任务空闲变量计数
#if OS_TASK_STAT_EN //若允许创建静态任务
OS_EXT INT8S OSCPUUsage; //定义CPU使用百分变量
OS_EXT INT32U OSIdleCtrMax; //1秒空闲任务的最大计数
OS_EXT INT32U OSIdleCtrRun; //空闲允许变量
OS_EXT BOOLEAN OSStatRdy; //静态任务准备变量
#endif
OS_EXT INT8U OSIntNesting; //中断递增变量
OS_EXT INT8U OSLockNesting; //任务锁住变量
OS_EXT idata INT8U OSPrioCur; //当前任务的优先级 定义在位区中
OS_EXT idata INT8U OSPrioHighRdy; //最到优先级变量
OS_EXT INT8U OSRdyGrp; //任务准备组号
OS_EXT INT8U OSRdyTbl[OS_RDY_TBL_SIZE]; //任务准备就绪表
OS_EXT idata BOOLEAN OSRunning; //任务正在运行的标志变量
#if OS_TASK_CREATE_EN || OS_TASK_CREATE_EXT_EN || OS_TASK_DEL_EN
// 若任务允许创建 或者 允许创建扩展的任务 或者允许任务删除
OS_EXT INT8U OSTaskCtr; //创建任务个数变量
#endif
OS_EXT idata OS_TCB *OSTCBCur; //当前任务指针
OS_EXT OS_TCB *OSTCBFreeList; //释放任务列表指针
OS_EXT idata OS_TCB *OSTCBHighRdy; //最高就绪任务的准备变量指针
OS_EXT OS_TCB *OSTCBList; //任务列表指针
OS_EXT OS_TCB *OSTCBPrioTbl[OS_LOWEST_PRIO + 1];//任务优先级表指针数组
OS_EXT INT32U OSTime; //操作系统时间变量
extern INT8U const OSMapTbl[]; //消息表队列
extern INT8U const OSUnMapTbl[]; //未使用的消息表
/*
*********************************************************************************************************
* FUNCTION PROTOTYPES
* (Target Independant Functions)
*********************************************************************************************************
*/
/*
*********************************************************************************************************
* MESSAGE MAILBOX MANAGEMENT
*********************************************************************************************************
*/
#if OS_MBOX_EN //若允许使用邮箱功能
void *OSMboxAccept(OS_EVENT *pevent) reentrant; //邮箱请求
OS_EVENT *OSMboxCreate(void *msg) reentrant; //邮箱创建
void *OSMboxPend(OS_EVENT *pevent, INT16U timeout, INT8U *err) reentrant; //邮箱未决定
INT8U OSMboxPost(OS_EVENT *pevent, void *msg) reentrant; //邮箱发送
INT8U OSMboxQuery(OS_EVENT *pevent, OS_MBOX_DATA *ppdata) reentrant;//邮箱获取
#endif
/*
*********************************************************************************************************
* MEMORY MANAGEMENT
*********************************************************************************************************
*/
#if OS_MEM_EN && (OS_MAX_MEM_PART >= 2)
//若允许使用内存功能 并且内存块大于2个以上
OS_MEM *OSMemCreate(void *addr, INT32U nblks, INT32U blksize, INT8U *err) reentrant;//内存创建
void *OSMemGet(OS_MEM *pmem, INT8U *err) reentrant;//内存获取
INT8U OSMemPut(OS_MEM *pmem, void *pblk) reentrant;//内存写入
INT8U OSMemQuery(OS_MEM *pmem, OS_MEM_DATA *ppdata) reentrant;//内存访问
#endif
/*
*********************************************************************************************************
* MESSAGE QUEUE MANAGEMENT
*********************************************************************************************************
*/
#if OS_Q_EN && (OS_MAX_QS >= 2) //若允许使用队列 并且队列大于2个
void *OSQAccept(OS_EVENT *pevent) reentrant;//队列请求
OS_EVENT *OSQCreate(void **start, INT16U size) reentrant;//队列创建
INT8U OSQFlush(OS_EVENT *pevent) reentrant;//队列冲洗
void *OSQPend(OS_EVENT *pevent, INT16U timeout, INT8U *err) reentrant;//队列未决定
INT8U OSQPost(OS_EVENT *pevent, void *msg) reentrant;//队列邮递
INT8U OSQPostFront(OS_EVENT *pevent, void *msg) reentrant;//
INT8U OSQQuery(OS_EVENT *pevent, OS_Q_DATA *ppdata) reentrant;
#endif
/*
*********************************************************************************************************
* SEMAPHORE MANAGEMENT
*********************************************************************************************************
*/
#if OS_SEM_EN //若使用信号功能
INT16U OSSemAccept(OS_EVENT *pevent) reentrant;//信号请求功能
OS_EVENT *OSSemCreate(INT16U value) reentrant;//信号创建
void OSSemPend(OS_EVENT *pevent, INT16U timeout, INT8U *err) reentrant;//信号未定
INT8U OSSemPost(OS_EVENT *pevent) reentrant;//信号
INT8U OSSemQuery(OS_EVENT *pevent, OS_SEM_DATA *ppdata) reentrant;
#endif
/*
*********************************************************************************************************
* TASK MANAGEMENT
*********************************************************************************************************
*/
#if OS_TASK_CHANGE_PRIO_EN //若允许任务改变优先级
INT8U OSTaskChangePrio(INT8U oldprio, INT8U newprio) reentrant;//改变任务优先级函数
#endif
INT8U OSTaskCreate(void (*task)(void *pd), void *ppdata, OS_STK *ptos, INT8U prio) reentrant;
//任务创建
#if OS_TASK_CREATE_EXT_EN //任务扩展创建
INT8U OSTaskCreateExt(void (*task)(void *pd),
void *ppdata,
OS_STK *ptos,
INT8U prio,
INT16U id,
OS_STK *pbos,
INT32U stk_size,
void *pext,
INT16U opt) reentrant;
#endif
#if OS_TASK_DEL_EN //若允许删除任务
INT8U OSTaskDel(INT8U prio) reentrant; //任务删除
INT8U OSTaskDelReq(INT8U prio) reentrant;//任务请求删除
#endif
#if OS_TASK_SUSPEND_EN //任务挂起
INT8U OSTaskResume(INT8U prio) reentrant;//任务恢复
INT8U OSTaskSuspend(INT8U prio) reentrant;//任务挂起
#endif
#if OS_TASK_CREATE_EXT_EN //若允许任务创建扩展功能
INT8U OSTaskStkChk(INT8U prio, OS_STK_DATA *ppdata) reentrant;//任务堆栈校验
#endif
INT8U OSTaskQuery(INT8U prio, OS_TCB *ppdata) reentrant;//任务队列
/*
*********************************************************************************************************
* TIME MANAGEMENT
*********************************************************************************************************
*/
void OSTimeDly(INT16U ticks) reentrant;//事件延时
INT8U OSTimeDlyHMSM(INT8U hours, INT8U minutes, INT8U seconds, INT16U milli) reentrant;//
//延时时 分 秒 毫秒
INT8U OSTimeDlyResume(INT8U prio) reentrant;//延时恢复
INT32U OSTimeGet(void) reentrant;//获取时间
void OSTimeSet(INT32U ticks) reentrant;//设置时间
void OSTimeTick(void) reentrant;//时间间隔
/*
*********************************************************************************************************
* MISCELLANEOUS
*********************************************************************************************************
*/
void OSInit(void) reentrant;//操作系统初始化
void OSIntEnter(void) reentrant;//关中断
void OSIntExit(void) reentrant;//开中断
void OSSchedLock(void) reentrant;//调度上锁
void OSSchedUnlock(void) reentrant;//调度未上锁
void OSStart(void) reentrant;//操作系统开始激活
void OSStatInit(void) reentrant;//操作系统开始初始化
INT16U OSVersion(void) reentrant;//操作系统版本号
/*$PAGE*/
/*
*********************************************************************************************************
* INTERNAL FUNCTION PROTOTYPES
* (Your application MUST NOT call these functions)
*********************************************************************************************************
*/
#if OS_MBOX_EN || OS_Q_EN || OS_SEM_EN//若允许使用邮箱 或者 使用队列 或者使用信号功能
void OSEventTaskRdy(OS_EVENT *pevent, void *msg, INT8U msk) reentrant;//操作系统事件任务准备
void OSEventTaskWait(OS_EVENT *pevent) reentrant;//事件任务等待
void OSEventTO(OS_EVENT *pevent) reentrant;//事件发送到
void OSEventWaitListInit(OS_EVENT *pevent) reentrant;//
#endif
#if OS_MEM_EN && (OS_MAX_MEM_PART >= 2)//若允许使用信号 并且 最大内存块大于等于2
void OSMemInit(void) reentrant;//内存初始化
#endif
#if OS_Q_EN //若允许使用队列
void OSQInit(void) reentrant;//初始化队列
#endif
void OSSched(void) reentrant;//任务调度
void OSTaskIdle(void *ddata) reentrant;//任务空闲
#if OS_TASK_STAT_EN //若任务状态允许
void OSTaskStat(void *ddata) reentrant;//任务状态
#endif
INT8U OSTCBInit(INT8U prio, OS_STK *ptos, OS_STK *pbos, INT16U id, INT16U stk_size, void *pext, INT16U opt) reentrant;
//任务控制块初始化
/*$PAGE*/
/*
*********************************************************************************************************
* FUNCTION PROTOTYPES
* (Target Specific Functions)
*********************************************************************************************************
*/
void OSCtxSw(void);//任务切换 实现在OS_CPU_A.ASM中
void OSIntCtxSw(void);//任务切换初始化
void OSStartHighRdy(void);//准备到最高优先级的任务
void OSTaskCreateHook(OS_TCB *ptcb) reentrant;//任务创建子沟函数
void OSTaskDelHook(OS_TCB *ptcb) reentrant;//任务删除子沟函数
void OSTaskStatHook(void) reentrant;//任务开始子沟函数
void *OSTaskStkInit(void (*task)(void *pd), void *ppdata, void *ptos, INT16U opt) reentrant;
//任务堆栈初始化函数
void OSTaskSwHook(void) reentrant;//任务切换子沟函数
void OSTickISR(void);//时钟节拍函数
void OSTimeTickHook(void) reentrant;//时钟节拍子沟函数
void InitTimer0(void) reentrant; //时钟初始化函数
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -