完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
本帖最后由 lhb292 于 2013-1-2 21:25 编辑
包括常用变量类型,常用全局变量和常用函数(并用不用的颜色标注出来) ucos源码中文版+uCOS-II原理+UCOS之任务调度机制+uCOS_II_2.52源码中文译注+ucos-VC6.0 UC/OS—II常用资料整理 作者:~风中的叶~ http://user.qzone.qq.com/654705188/infocenter#!app=2&via=QZ.HashRefresh&pos=1334584159 一、变量类型 1. OS_STK:typedef unsigned int堆栈的类型定义 1.1 OS_STK_DATA:堆栈数据的类型定义 2. OS_CPU_SR:typedef unsigned int保存CPU状态的变量类型 3. OS_EVENT:消息事件的类型定义,包括信号量、互斥型信号量、消息邮箱、消息队列 typedef struct { INT8U OSEventType; INT8U OSEventGrp; INT16U OSEventCnt; void *OSEventPtr; INT8U OSEventTbl[OS_EVENT_TBL_SIZE]; } OS_EVENT; 3.1 OS_SEM_DATA:消息信号量数据的类型定义 3.2 OS_MUTEX_DATA:消息互斥型信号量数据的类型定义 3.3 OS_MBOX_DATA:消息邮箱数据的类型定义 4. OS_FLAG_GRP:标志组的类型定义 typedef struct { INT8U OSFlagType; Void *OSFlagWaitList; OS_FLAGS OSFlagFlags; } OS_FLAG_GRP; 4.1 OS_FLAGS:typedef INT16U事件标志(位)类型定义 4.2 OS_FLAG_NODE:事件标志节点类型定义 5. OS_Q:消息队列的类型定义 typedef structos_q { struct os_q *OSQPtr; void **OSQStart; void **OSQEnd; void **OSQIn; void **OSQOut; INT16U OSQSize; INT16U OSQEntries; } OS_Q; 5.1 OS_Q_DATA:消息队列数据的类型定义 6. OS_MEM:内存管理的类型定义 typedef struct { void *OSMemAddr; void *OSMemFreeList; INT32U OSMemBlkSize; INT32U OSMemNBlks; INT32U OSMemNFree; } OS_MEM; 6.1 OS_MEM_DATA:内存管理数据的类型定义 7. OS_TCB:任务控制块的类型定义 二、常用变量 1. OSCtxSwCtr:OS_EXT INT32U任务切换次数的记录变量 2. OSCPUUsage:OS_EXT INT8S CPU的使用率 3. OSIdleCtr:OS_EXT INT32空闲任务计数器 4. OSIdleCtrRun:空闲任务的计数器每秒的计数值 5. OSIntNesting:OS_EXT INT8S中断嵌套的层数(0~255) 6. OSLockNesting:OS_EXT INT8S调用OSSchedLock嵌套层数 7. OSPrioCur:OS_EXT INT8S正在运行的任务的优先级 8. OSTaskCtr:OS_EXT INT8S已经建立了的任务数 全局变量:
三、常用函数 一、OS_CORE.C (1)void OSInit (void) //系统初始化 (2)void OSIntEnter (void) //发生了一次中断(中断嵌套的逐层进入) (3)void OSIntExit (void) //退出了一次中断(中断嵌套的逐层退出) (4)void OSSchedLock (void) // 给调度器上锁 (5)void OSSchedUnlock (void) // 给调度器解锁,成对使用 (6)void OSStart (void) // 启动多任务过程,在启动之前必须调用OSInit(),并已建立一个任务。其中OSStartHighRdy()必须调用OSTaskSwHook(),并令OSRunning = TRUE. (7)void OSStatInit (void) //确定CPU 使用率,第一个任务中调用 (8)void OSTimeTick (void) //时钟节拍服务函数,在每个时钟节拍了解每个任务的延时情况,使其中已经到了延时时限的非挂起任务进入就绪状态 (9)INT16U OSVersion (void) //返回uc/os的版本号*100 (10)void OS_Dummy (void) //不做任何事情,被OSTaskDel() 所调用 (11)INT8U OS_EventTaskRdy (OS_EVENT *pevent, void *msg,INT8U msk) // 使一个正在等待的任务进入就绪状态,在调用函数OS***Post发送一个事件时被调用 (12)void OS_EventTaskWait (OS_EVENT *pevent) //使一个任务进入等待某事件发生状态 (13)void OS_EventTO (OS_EVENT *pevent) // 使一个等待超时的任务进入就绪状态 (14)void OS_EventWaitListInit (OS_EVENT *pevent) // 把OSEventGrp及任务等待表中的每一位清零,即令ECB中不含任务等待,被OS***Create()调用 (15)void OS_Sched (void) // 实现任务级的调度 (16)void OS_TaskIdle (void *pdata) // 空闲任务,为使CPU 在没有用户任务时有事可做 (17)void OS_TaskStat (void *pdata) // 统计任务,每秒计算一次CPU在单位时间内的使用时间,并将计算结果以百分数的形式存放在OSCPUUsage中,以便应用程序访问它来了解cpu的利用率 (18)INT8U OS_TCBInit (INT8U prio, // 任务的优先级别,存于OSTCBPrio OS_STK *ptos, // 任务堆栈顶指针,存于OSTCBStkPtr OS_STK *pbos, // 任务堆栈栈底指针,存于OSTCBStkBottom INT16U id, // 任务的标识符,存于OSTCBID INT32U stk_size, // 任务堆栈长度,存于OSTCBStkSize void *pext, // 任务控制块的扩展指针,存于OSTCBExtPtr INT16U opt) // 任务控制块的选择项,存于OSTCBOpt // 为用户程序分配任务控制块及对其进行初始化 备注:INT8U const OSUnMapTbl[ ] 是uc/os 为提高查找速度而定义的一个数组 二、OS_TASK.C (1)INT8U OSTaskCreate (void (*task)(void *pd), void*pdata, OS_STK *ptos, INT8U prio) // 任务的创建 (2)INT8U OSTaskCreateExt (void (*task)(void *pd),// 指向任务的指针 void *pdata, // 传递给任务的参数 OS_STK *ptos, // 指向任务堆栈栈顶的指针 INT8U prio, // 创建任务的优先级 INT16U id, // 任务的标识 OS_STK *pbos, // 任务堆栈栈底的指针 INT32U stk_size, // 任务堆栈的长度 void *pext, // 指向附加数据域的指针 INT16U opt) // 用于设定操作的选项 //OS_TASK_OPT_STK_CHK,OS_TASK_OPT_STK_CLR,OS_TASK_OPT_SAVE_FP (3)INT8U OSTaskChangePrio (INT8U oldprio, INT8Unewprio) // 任务优先级别的改变 (4)INT8U OSTaskDel (INT8U prio) // 任务的删除 (5)INT8U OSTaskDelReq (INT8U prio) // 请求删除任务函数 (6)INT8U OSTaskSuspend (INT8U prio) // 任务的挂起,可用来挂起自身或除空闲任务之外的任何任务 (7)INT8U OSTaskResume (INT8U prio) // 任务的恢复 (8)INT8U OSTaskQuery (INT8U prio, OS_TCB *pdata) // 任务的查询 (9)INT8U OSTaskStkChk (INT8Uprio, OS_STK_DATA *pdata) // 校核空余内存的数量 三、OS_TIME.C (1)void OSTimeDly (INT16U ticks) // 以时钟节拍数为单位延时 (2)INT8U OSTimeDlyHMSM (INT8Uhours, INT8U minutes, INT8U seconds, INT16U milli) // 用时、分、秒、毫秒为单位延时 (3)INT8U OSTimeDlyResume (INT8U prio) // 取消延时,若任务比正在运行的任务级别高,则立即引发一次调度 (4)INT32U OSTimeGet (void) // 获取OSTime 值 (5)void OSTimeSet (INT32U ticks) // 设置 OSTime 值 注:INT32U OSTime // 全局变量,用以记录系统发生的时钟节拍 四、OS_SEM.C (1)OS_EVENT *OSSemCreate (INT16U cnt) // 创建信号量 (2)OS_EVENT *OSSemDel (OS_EVENT *pevent, INT8U opt, INT8U*err) // 删除信号量 (3)INT16U OSSemAccept (OS_EVENT *pevent) // 无等待的请求信号量 (4)void OSSemPend (OS_EVENT *pevent, INT16U timeout,INT8U *err) // 有等待的请求信号量 (5)INT8U OSSemPost (OS_EVENT *pevent) // 发送(释放)信号量 (6)INT8U OSSemQuery (OS_EVENT *pevent, OS_SEM_DATA*pdata) // 获取信号量的当前状态 五、OS_MUTEX.C (1)OS_EVENT *OSMutexCreate (INT8U prio, INT8U *err) // 创建互斥型信号量 (2)OS_EVENT *OSMutexDel(OS_EVENT*pevent, INT8U opt, INT8U *err) // 删除互斥型信号量 (3)void OSMutexPend (OS_EVENT *pevent, INT16Utimeout, INT8U *err) // 有等待时间的请求信号量 (4)INT8U OSMutexAccept (OS_EVENT *pevent, INT8U *err) // 无等待时间的请求信号量 (5)INT8U OSMutexPost (OS_EVENT *pevent) // 发送(释放)互斥型信号量 (6)INT8U OSMutexQuery (OS_EVENT*pevent, OS_MUTEX_DATA *pdata) // 获取互斥型信号量的当前状态 六、OS_MBOX.C (1)OS_EVENT *OSMboxCreate (void *msg) // 创建一个消息邮箱 (2OS_EVENT *OSMboxDel (OS_EVENT *pevent, INT8U opt, INT8U *err) // 删除消息邮箱 (3)void *OSMboxAccept (OS_EVENT *pevent) // 无等待的请求消息邮箱 (4)void *OSMboxPend (OS_EVENT *pevent, INT16Utimeout, INT8U *err) // 请求消息邮箱,查看OSEventPtr是否为NULL (5)INT8U OSMboxPost (OS_EVENT *pevent, void *msg) // 向消息邮箱发送消息 (6)INT8U OSMboxPostOpt (OS_EVENT *pevent, void *msg,INT8U opt) // 以广播形式向事件等待任务表中的所有任务发送消息 (7)INT8U OSMboxQuery (OS_EVENT *pevent, OS_MBOX_DATA*pdata) // 状态查询 七、OS_Q.C (1)OS_EVENT *OSQCreate (void **start, INT16U size) // 创建一个消息队列 (2)OS_EVENT *OSQDel (OS_EVENT *pevent, INT8U opt, INT8U*err) // 删除消息队列 (3)INT8U OSQFlush (OS_EVENT *pevent) // 清空消息队列 (4)void *OSQPend (OS_EVENT *pevent, INT16U timeout,INT8U *err) // 有等待的请求一个消息队列 (5)void *OSQAccept (OS_EVENT *pevent) // 无等待的请求一个消息队列 (6)INT8U OSQPost (OS_EVENT *pevent, void *msg) // 以“先进先出”的方式向消息队列发送消息 (7)INT8U OSQPostFront (OS_EVENT *pevent, void *msg) // 以“后进先出”的方式向消息队列发送消息 (8)INT8U OSQPostOpt (OS_EVENT *pevent, void *msg,INT8U opt) //OS_POST_OPT_BROADCAST // 以“广播”方式向消息队列发送消息 (9)INT8U OSQQuery (OS_EVENT *pevent, OS_Q_DATA *pdata) // 获取消息队列的当前状态 (10)void OS_QInit (void) // 消息队列初始化 八、OS_FLAG.C (1)OS_FLAG_GRP *OSFlagCreate (OS_FLAGS flags,INT8U *err) // 信号量集的创建函数 (2)OS_FLAG_GRP *OSFlagDel (OS_FLAG_GRP *pgrp,INT8U opt,INT8U*err) // 删除信号量集 (3)OS_FLAGS OSFlagPend (OS_FLAG_GRP *pgrp, // 所要请求的信号量集的指针 OS_FLAGS flags, // 滤波器 INT8U wait_type, // 等待类型 INT16U timeout, // 延时时限 INT8U *err) // 错误信息 // 请求信号量集 (4)OS_FLAGS OSFlagAccept (OS_FLAG_GRP *pgrp, // 所请求的信号量集指针 OS_FLAGS flags, // 请求的信号 INT8U wait_type, // 逻辑运算类型 INT8U *err) // 错误信息 // 无等待的请求一个信号量集 (5)OS_FLAGS OSFlagPost (OS_FLAG_GRP *pgrp, OS_FLAGS flags, // 所要选择发送的信号 INT8U opt, // 信号有效的选项 INT8U *err) // 向信号量集发送信号 (6)OS_FLAGS OSFlagQuery (OS_FLAG_GRP *pgrp, // 待查询的信号量集的指针 INT8U *err) // 查询信号量的状态,返回被查询信号量集标志组的成员OSFlagFlags (7)static void OS_FlagBlock (OS_FLAG_GRP *pgrp, // 信号量集指针OS_FLAG_NODE*pnode,//待添加的等待任务节点指针 OS_FLAGSflags, // 指定等待信号的数据 INT8U wait_type, // 信号与等待之间的逻辑 INT16Utimeout) // 等待时限 // 添加节点,在请求信号量集函数OSFlagPend() 中被调用 (8)static BOOLEAN OS_FlagTaskRdy (OS_FLAG_NODE *pnode, OS_FLAGS flags_rdy) // 期望的事件标志为已经置位,从而使一个任务准备运行 (9)void OS_FlagUnlink(OS_FLAG_NODE *pnode) // 删除节点,在OSFlagPost() 中被调用 (10)void OS_FlagInit (void) // initialize the event flag module,是uc/os的内部函数,应用程序不得调用该函数 九、OS_MEM.C (1)OS_MEM *OSMemCreate (void *addr, INT32U nblks,INT32U blksize, INT8U *err) // 创建动态内存 (2)void *OSMemGet (OS_MEM *pmem, INT8U *err) // 请求获得一个内存块 (3)INT8U OSMemPut (OS_MEM *pmem, void *pblk) // 释放一个内存块 (4)INT8U OSMemQuery (OS_MEM *pmem, OS_MEM_DATA *pdata) // 查询动态内存的状态 (5)void OS_MemInit(void) // 初始化动态内存 全部资料在附件中。 以上是UCOS-II资料;UCOS-III资料在https://bbs.elecfans.com/forum.php?mod=viewthread&tid=257878 中。
|
||
相关推荐
|
||
学习中,谢谢分享。
|
|
|
|
|
|
谢谢楼主。。。。
|
|
|
|
|
|
xuexi,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
|
|
|
|
|
|
收藏 学习一下
|
|
|
|
|
|
学习中,谢谢分享。
|
|
|
|
|
|
谢谢楼主的分享
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
UCOSII中断中添加OSSemPost(Sem);程序无法运行
5005 浏览 1 评论
在BC5.0上编译uC/OS-II出现"eeror writing object file",怎样处理???
3219 浏览 1 评论
594浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-20 18:17 , Processed in 0.904946 second(s), Total 89, Slave 79 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号