UCOSII常用资料整理.docx
- 文档编号:11092387
- 上传时间:2023-02-25
- 格式:DOCX
- 页数:12
- 大小:18.90KB
UCOSII常用资料整理.docx
《UCOSII常用资料整理.docx》由会员分享,可在线阅读,更多相关《UCOSII常用资料整理.docx(12页珍藏版)》请在冰豆网上搜索。
UCOSII常用资料整理
UC/OS—II的常用资料整理
作者:
~风中的叶~QQ:
654705188
一、变量类型
1.OS_STK:
typedefunsignedint堆栈的类型定义
1.1OS_STK_DATA:
堆栈数据的类型定义
2.OS_CPU_SR:
typedefunsignedint保存CPU状态的变量类型
3.OS_EVENT:
消息事件的类型定义,包括信号量、互斥型信号量、消息邮箱、消息队列
typedefstruct{
INT8UOSEventType;
INT8UOSEventGrp;
INT16UOSEventCnt;
void*OSEventPtr;
INT8UOSEventTbl[OS_EVENT_TBL_SIZE];
}OS_EVENT;
3.1OS_SEM_DATA:
消息信号量数据的类型定义
3.2OS_MUTEX_DATA:
消息互斥型信号量数据的类型定义
3.3OS_MBOX_DATA:
消息邮箱数据的类型定义
4.OS_FLAG_GRP:
标志组的类型定义
typedefstruct{
INT8UOSFlagType;
Void*OSFlagWaitList;
OS_FLAGSOSFlagFlags;
}OS_FLAG_GRP;
4.1OS_FLAGS:
typedefINT16U事件标志(位)类型定义
4.2OS_FLAG_NODE:
事件标志节点类型定义
5.OS_Q:
消息队列的类型定义
typedefstructos_q{
structos_q*OSQPtr;
void**OSQStart;
void**OSQEnd;
void**OSQIn;
void**OSQOut;
INT16UOSQSize;
INT16UOSQEntries;
}OS_Q;
5.1OS_Q_DATA:
消息队列数据的类型定义
6.OS_MEM:
内存管理的类型定义
typedefstruct{
void*OSMemAddr;
void*OSMemFreeList;
INT32UOSMemBlkSize;
INT32UOSMemNBlks;
INT32UOSMemNFree;
}OS_MEM;
6.1OS_MEM_DATA:
内存管理数据的类型定义
7.OS_TCB:
任务控制块的类型定义
二、常用变量
1.OSCtxSwCtr:
OS_EXTINT32U任务切换次数的记录变量
2.OSCPUUsage:
OS_EXTINT8SCPU的使用率
3.OSIdleCtr:
OS_EXTINT32空闲任务计数器
4.OSIdleCtrRun:
空闲任务的计数器每秒的计数值
5.OSIntNesting:
OS_EXTINT8S中断嵌套的层数(0~255)
6.OSLockNesting:
OS_EXTINT8S调用OSSchedLock嵌套层数
7.OSPrioCur:
OS_EXTINT8S正在运行的任务的优先级
8.OSTaskCtr:
OS_EXTINT8S已经建立了的任务数
全局变量:
变量
值
变量的说明
OSPrioCur
0
INT8U,正在运行的任务的优先级
OSPrioHighRdy
0
INT8U,具有最高优先级别的就绪任务的优先级
OSTCBCur
NULL
OS_TCB*,指向正在运行任务的OSTCB的指针
OSTCBHighRdy
NULL
OS_TCB*,指向最高优先级就绪任务OSTCB的指针
OSTime
0L
INT32U,系统当前时间(节拍数)
OSIntNesting
0
INT8U,中断嵌套的层数(0~255)
OSLockNesting
0
INT8U,调用了OSSchedLock的嵌套层数
OSCtxSwCtr
0
INT32U,上下文切换的次数
OSTaskCtr
2
INT8U,已经建立了的任务数
OSRunning
FALSE
BOOLEAN,uC/OS-II核是否正在运行的标志
OSCPUUsage
0
INT8S,CPU的利用率(%)
OSIdleCtrMax
0L
INT32U,每秒空闲任务计数的最大值
OSIdleCtrRun
0L
INT32U,空闲任务的计数器每秒的计数值
OSIdleCtr
0L
INT32U,空闲任务计数器
OSStatRdy
FALSE
BOOLEAN,统计任务是否就绪的标志
OSIntExity
0
INT8U,用于OSInitExt()
三、常用函数
一、OS_CORE.C
(1)voidOSInit(void)//系统初始化
(2)voidOSIntEnter(void)//发生了一次中断(中断嵌套的逐层进入)
(3)voidOSIntExit(void)//退出了一次中断(中断嵌套的逐层退出)
(4)voidOSSchedLock(void)//给调度器上锁
(5)voidOSSchedUnlock(void)//给调度器解锁,成对使用
(6)voidOSStart(void)//启动多任务过程,在启动之前必须调用OSInit(),并已建立一个任务。
其中OSStartHighRdy()必须调用OSTaskSwHook(),并令OSRunning=TRUE.
(7)voidOSStatInit(void)//确定CPU使用率,第一个任务中调用
(8)voidOSTimeTick(void)//时钟节拍服务函数,在每个时钟节拍了解每个任务的延时情况,使其中已经到了延时时限的非挂起任务进入就绪状态
(9)INT16UOSVersion(void)//返回uc/os的版本号*100
(10)voidOS_Dummy(void)//不做任何事情,被OSTaskDel()所调用
(11)INT8UOS_EventTaskRdy(OS_EVENT*pevent,void*msg,INT8Umsk)
//使一个正在等待的任务进入就绪状态,在调用函数OS***Post发送一个事件时被调用
(12)voidOS_EventTaskWait(OS_EVENT*pevent)
//使一个任务进入等待某事件发生状态
(13)voidOS_EventTO(OS_EVENT*pevent)
//使一个等待超时的任务进入就绪状态
(14)voidOS_EventWaitListInit(OS_EVENT*pevent)
//把OSEventGrp及任务等待表中的每一位清零,即令ECB中不含任务等待,被OS***Create()调用
(15)voidOS_Sched(void)//实现任务级的调度
(16)voidOS_TaskIdle(void*pdata)//空闲任务,为使CPU在没有用户任务时有事可做
(17)voidOS_TaskStat(void*pdata)//统计任务,每秒计算一次CPU在单位时间内的使用时间,并将计算结果以百分数的形式存放在OSCPUUsage中,以便应用程序访问它来了解cpu的利用率
(18)INT8UOS_TCBInit(INT8Uprio,//任务的优先级别,存于OSTCBPrio
OS_STK*ptos,//任务堆栈顶指针,存于OSTCBStkPtr
OS_STK*pbos,//任务堆栈栈底指针,存于OSTCBStkBottom
INT16Uid,//任务的标识符,存于OSTCBID
INT32Ustk_size,//任务堆栈长度,存于OSTCBStkSize
void*pext,//任务控制块的扩展指针,存于OSTCBExtPtr
INT16Uopt)//任务控制块的选择项,存于OSTCBOpt
//为用户程序分配任务控制块及对其进行初始化
备注:
INT8UconstOSUnMapTbl[]是uc/os为提高查找速度而定义的一个数组
二、OS_TASK.C
(1)INT8UOSTaskCreate(void(*task)(void*pd),void*pdata,OS_STK*ptos,INT8Uprio)//任务的创建
(2)INT8UOSTaskCreateExt(void(*task)(void*pd),//指向任务的指针
void*pdata,//传递给任务的参数
OS_STK*ptos,//指向任务堆栈栈顶的指针
INT8Uprio,//创建任务的优先级
INT16Uid,//任务的标识
OS_STK*pbos,//任务堆栈栈底的指针
INT32Ustk_size,//任务堆栈的长度
void*pext,//指向附加数据域的指针
INT16Uopt)//用于设定操作的选项
//OS_TASK_OPT_STK_CHK,OS_TASK_OPT_STK_CLR,OS_TASK_OPT_SAVE_FP
(3)INT8UOSTaskChangePrio(INT8Uoldprio,INT8Unewprio)
//任务优先级别的改变
(4)INT8UOSTaskDel(INT8Uprio)//任务的删除
(5)INT8UOSTaskDelReq(INT8Uprio)//请求删除任务函数
(6)INT8UOSTaskSuspend(INT8Uprio)//任务的挂起,可用来挂起自身或除空闲任务之外的任何任务
(7)INT8UOSTaskResume(INT8Uprio)//任务的恢复
(8)INT8UOSTaskQuery(INT8Uprio,OS_TCB*pdata)
//任务的查询
(9)INT8UOSTaskStkChk(INT8Uprio,OS_STK_DATA*pdata)
//校核空余内存的数量
三、OS_TIME.C
(1)voidOSTimeDly(INT16Uticks)//以时钟节拍数为单位延时
(2)INT8UOSTimeDlyHMSM(INT8Uhours,INT8Uminutes,INT8Useconds,INT16Umilli)//用时、分、秒、毫秒为单位延时
(3)INT8UOSTimeDlyResume(INT8Uprio)
//取消延时,若任务比正在运行的任务级别高,则立即引发一次调度
(4)INT32UOSTimeGet(void)//获取OSTime值
(5)voidOSTimeSet(INT32Uticks)//设置OSTime值
注:
INT32UOSTime//全局变量,用以记录系统发生的时钟节拍
四、OS_SEM.C
(1)OS_EVENT*OSSemCreate(INT16Ucnt)
//创建信号量
(2)OS_EVENT*OSSemDel(OS_EVENT*pevent,INT8Uopt,INT8U*err)
//删除信号量
(3)INT16UOSSemAccept(OS_EVENT*pevent)
//无等待的请求信号量
(4)voidOSSemPend(OS_EVENT*pevent,INT16Utimeout,INT8U*err)
//有等待的请求信号量
(5)INT8UOSSemPost(OS_EVENT*pevent)
//发送(释放)信号量
(6)INT8UOSSemQuery(OS_EVENT*pevent,OS_SEM_DATA*pdata)
//获取信号量的当前状态
五、OS_MUTEX.C
(1)OS_EVENT*OSMutexCreate(INT8Uprio,INT8U*err)
//创建互斥型信号量
(2)OS_EVENT*OSMutexDel(OS_EVENT*pevent,INT8Uopt,INT8U*err)//删除互斥型信号量
(3)voidOSMutexPend(OS_EVENT*pevent,INT16Utimeout,INT8U*err)
//有等待时间的请求信号量
(4)INT8UOSMutexAccept(OS_EVENT*pevent,INT8U*err)
//无等待时间的请求信号量
(5)INT8UOSMutexPost(OS_EVENT*pevent)
//发送(释放)互斥型信号量
(6)INT8UOSMutexQuery(OS_EVENT*pevent,OS_MUTEX_DATA*pdata)//获取互斥型信号量的当前状态
六、OS_MBOX.C
(1)OS_EVENT*OSMboxCreate(void*msg)
//创建一个消息邮箱
(2OS_EVENT*OSMboxDel(OS_EVENT*pevent,INT8Uopt,INT8U*err)
//删除消息邮箱
(3)void*OSMboxAccept(OS_EVENT*pevent)
//无等待的请求消息邮箱
(4)void*OSMboxPend(OS_EVENT*pevent,INT16Utimeout,INT8U*err)
//请求消息邮箱,查看OSEventPtr是否为NULL
(5)INT8UOSMboxPost(OS_EVENT*pevent,void*msg)
//向消息邮箱发送消息
(6)INT8UOSMboxPostOpt(OS_EVENT*pevent,void*msg,INT8Uopt)
//以广播形式向事件等待任务表中的所有任务发送消息
(7)INT8UOSMboxQuery(OS_EVENT*pevent,OS_MBOX_DATA*pdata)
//状态查询
七、OS_Q.C
(1)OS_EVENT*OSQCreate(void**start,INT16Usize)
//创建一个消息队列
(2)OS_EVENT*OSQDel(OS_EVENT*pevent,INT8Uopt,INT8U*err)
//删除消息队列
(3)INT8UOSQFlush(OS_EVENT*pevent)
//清空消息队列
(4)void*OSQPend(OS_EVENT*pevent,INT16Utimeout,INT8U*err)
//有等待的请求一个消息队列
(5)void*OSQAccept(OS_EVENT*pevent)
//无等待的请求一个消息队列
(6)INT8UOSQPost(OS_EVENT*pevent,void*msg)
//以“先进先出”的方式向消息队列发送消息
(7)INT8UOSQPostFront(OS_EVENT*pevent,void*msg)
//以“后进先出”的方式向消息队列发送消息
(8)INT8UOSQPostOpt(OS_EVENT*pevent,void*msg,INT8Uopt)
//OS_POST_OPT_BROADCAST
//以“广播”方式向消息队列发送消息
(9)INT8UOSQQuery(OS_EVENT*pevent,OS_Q_DATA*pdata)
//获取消息队列的当前状态
(10)voidOS_QInit(void)//消息队列初始化
八、OS_FLAG.C
(1)OS_FLAG_GRP*OSFlagCreate(OS_FLAGSflags,INT8U*err)
//信号量集的创建函数
(2)OS_FLAG_GRP*OSFlagDel(OS_FLAG_GRP*pgrp,INT8Uopt,INT8U*err)//删除信号量集
(3)OS_FLAGSOSFlagPend(OS_FLAG_GRP*pgrp,//所要请求的信号量集的指针
OS_FLAGSflags,//滤波器
INT8Uwait_type,//等待类型
INT16Utimeout,//延时时限
INT8U*err)//错误信息
//请求信号量集
(4)OS_FLAGSOSFlagAccept(OS_FLAG_GRP*pgrp,//所请求的信号量集指针
OS_FLAGSflags,//请求的信号
INT8Uwait_type,//逻辑运算类型
INT8U*err)//错误信息
//无等待的请求一个信号量集
(5)OS_FLAGSOSFlagPost(OS_FLAG_GRP*pgrp,
OS_FLAGSflags,//所要选择发送的信号
INT8Uopt,//信号有效的选项
INT8U*err)
//向信号量集发送信号
(6)OS_FLAGSOSFlagQuery(OS_FLAG_GRP*pgrp,//待查询的信号量集的指针
INT8U*err)
//查询信号量的状态,返回被查询信号量集标志组的成员OSFlagFlags
(7)staticvoidOS_FlagBlock(OS_FLAG_GRP*pgrp,//信号量集指针OS_FLAG_NODE*pnode,//待添加的等待任务节点指针
OS_FLAGSflags,//指定等待信号的数据
INT8Uwait_type,//信号与等待之间的逻辑
INT16Utimeout)//等待时限
//添加节点,在请求信号量集函数OSFlagPend()中被调用
(8)staticBOOLEANOS_FlagTaskRdy(OS_FLAG_NODE*pnode,
OS_FLAGSflags_rdy)
//期望的事件标志为已经置位,从而使一个任务准备运行
(9)voidOS_FlagUnlink(OS_FLAG_NODE*pnode)
//删除节点,在OSFlagPost()中被调用
(10)voidOS_FlagInit(void)//initializetheeventflagmodule,是uc/os的内部函数,应用程序不得调用该函数
九、OS_MEM.C
(1)OS_MEM*OSMemCreate(void*addr,INT32Unblks,INT32Ublksize,INT8U*err)//创建动态内存
(2)void*OSMemGet(OS_MEM*pmem,INT8U*err)
//请求获得一个内存块
(3)INT8UOSMemPut(OS_MEM*pmem,void*pblk)
//释放一个内存块
(4)INT8UOSMemQuery(OS_MEM*pmem,OS_MEM_DATA*pdata)
//查询动态内存的状态
(5)voidOS_MemInit(void)//初始化动态内存
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- UCOSII 常用 资料 整理