uCOS操作系统46个基本函数汇总

上传人:101****457 文档编号:61954895 上传时间:2018-12-15 格式:PDF 页数:15 大小:335.98KB
返回 下载 相关 举报
uCOS操作系统46个基本函数汇总_第1页
第1页 / 共15页
uCOS操作系统46个基本函数汇总_第2页
第2页 / 共15页
uCOS操作系统46个基本函数汇总_第3页
第3页 / 共15页
uCOS操作系统46个基本函数汇总_第4页
第4页 / 共15页
uCOS操作系统46个基本函数汇总_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《uCOS操作系统46个基本函数汇总》由会员分享,可在线阅读,更多相关《uCOS操作系统46个基本函数汇总(15页珍藏版)》请在金锄头文库上搜索。

1、uC/OS 操作操作系统系统 46 个个基本基本函数函数汇总汇总 Void OSInit(void); 所属文件 OS_CORE.C 调用者 启动代码 开关量 无 OSinit() 初始化 C/OS-,对这个函数的调用必须在调用 OSStart()函数之前, 而 OSStart()函数真正开始运行多任务。 Void OSIntEnter(void); 所属文件 OS_CORE.C 调用者 中断 开关量 无 OSIntEnter() 通知 C/OS-一个中断处理函数正在执行,这有助于 C/OS-掌握中断嵌套的情况。 OSIntEnter()函数通常和 OSIntExit()函 数联合使用。 注意

2、/警告:在任务级不能调用该函数。如果系统使用的处理器能够执行自动的独立执行读取-修改-写入的 操作,那么就可以直接递增中断 嵌套层数(OSIntNesting),这样可以避免调用函数所带来的额外的开销。 Void OSIntExit(void); 所属文件 OS_CORE.C 调用者 中断 开关量 无 OSIntExit() 通知 C/OS-一个中断服务已执行完毕,这有助于 C/OS-掌握中断嵌套的情况。通常 OSIntExit()和 OSIntEnter()联合使 用。当最后一层嵌套的中断执行完毕后,如果有更高优先级的任务 准备就绪,C/OS-会调用任务调度函数,在这种情况下,中断返回到更高

3、优先级的任务而 不是被中断了 的任务。 注意/警告: 在任务级不能调用该函数。 并且即使没有调用 OSIntEnter () 而是使用直接递增 OSIntNesting 的 方法,也必须调用 OSIntExit()函数。 Void OSSchedLock(void); 所属文件 OS_CORE.C 调用者 任务或中断 开关量 N/A OSSchedLock() 函数停止任务调度,只有使用配对的函数 OSSchedUnlock()才能重新开始内核的任务 调度。 调用 OSSchedLock () 函数的任务独占 CPU, 不管有没有其他高优先级的就绪任务。 在这种情况下, 中断仍然可以被接受和执

4、行(中断必须允许)。OSSchedLock()函数和 OSSchedUnlock()函数必须配 对使用。 C/OS-可以支持多达 254 层的 OSSchedLock () 函数嵌套, 必须调用同样次数的 OSSchedUnlock ()函数才能恢复任务调度。 注意/警告:任务调用了调用了 OSSchedLock()函数后,决不能再调用()函数后,决不能再调用 可能导致当前任务挂起的系统函数:可能导致当前任务挂起的系统函数: OSTimeDly(),(),OSTimeDlyHMSM(),(),OSSemPend(),OSMboxPend(),OSQPend()。 因为任 务调度已经被禁止,其他

5、任务不能运行,这会导致系统死锁。 Void OSSchedUnlock(void); 所属文件 OS_CORE.C 调用者 任务或中断 开关量 N/A 在 调用了 OSSchedLock()函数后,OSSchedUnlock()函数恢复任务调度。 注意/警告:任务调用了 OSSchedLock() 函数后,决不能再调用可能导致当前任务挂起的系统函 数: OSTimeDly(),OSTimeDlyHMSM(),OSSemPend(),OSMboxPend(),OSQPend()。因为任务 调度已 经被禁止,其他任务不能运行,这会导致系统死锁。 void OSStart(void); 所属文件 O

6、S_CORE.C 调用者 初始代码 开关量 无 OSStart( )启动 C/OS-II 的多任务环境。 注意/警告:在调用 OSStart( )之前必须先调用 OSInit ( )。在用户程序中 OSStart( )只能被调用一次。第二次 调用 OSStart( )将不进行任何操作。 void OSStatInit (void); 所属文件 OS_CORE.C 调用者 初始代码 开关量 OS_TASK_STAT_EN 所属文件 OS_TASK.C 调用者 任务 开关量 OS_TASK_CHANGE_PRIO_EN OSTaskChangePrio()改变一 个任务的优先级。 参数 oldpr

7、io 是任务原先的优先级。 newprio 是任务的新优先级。 返回值 OSTaskChangePrio()的返回值为下述之一: OS_NO_ERR:任 务优先级成功改变。 OS_PRO_INVALID:参数中的任务原先优先级或新优先级大于或等于 OS_LOWEST_PRIO。 OS_PRIO_EXIST: 参数中的新优先级已经存在。 OS_PRIO_ERR:参数中的任务原先优先级不存在。 注意/警告:参数中的新优先级必须是没有使用过的, 否则会返回错误码。在 OSTaskChangePrio()中还 会先判断要改变优先级的任务是否存在 INT8U OSTaskCreate(void (*ta

8、sk)(void *pd), void *pdata, OS_STK *ptos, INT8U prio); 所属文件 OS_TASK.C 调用者 任务或初始化代码 开关量 无 OSTaskCreate()建立一个新任务。任务的建立可以在多任务环境启 动之前,也可以在正在运行的任务中 建立。中断处理程序中不能建立任务。一个任务必须为无限循环结构,且不能有返回点。 OSTaskCreate() 是为与先前的 C/OS 版本保持兼容,新增的特性在 OSTaskCreateExt()函数中。 无论用户程序中是否产生中断,在初始化任务堆栈 时,堆栈的结构必须与 CPU 中断后寄存器入栈的顺序 结构相同

9、。详细说明请参考所用处理器的手册。 参数 task 是指向任务代码的指针。 Pdata 指向一个数据结构,该结构用来在建立任务时向任务传递参数。 ptos 为指向任务堆栈栈顶的指针。任务堆栈用来保存局部变量,函数参数,返回地址以 及任务被中断时的 CPU 寄存器内容。任务堆栈的大小决定于任务的需要及预计的中断嵌套层数。计算堆栈的大小,需要知道 任务的局部变量所占的空间,可能产生 嵌套调用的函数,及中断嵌套所需空间。如果初始化常量 OS_STK_GROWTH 设为 1,堆栈被设为从内存高地址向低地址增长,此时 ptos 应该指向任务 堆栈空间的 最高地址。反之,如果 OS_STK_GROWTH

10、设为 0,堆栈将从内存的低地址向高地址增长。 prio 为任务的优先级。每个任务必须有 一个唯一的优先级作为标识。数字越小,优先级越高。 返回值 OSTaskCreate()的返回值为下述之一: OS_NO_ERR: 函数调用成功。 OS_PRIO_EXIST:具有该优先级的任务已经存在。 OS_PRIO_INVALID:参数指定的优先级大于 OS_LOWEST_PRIO。 OS_NO_MORE_TCB:系统中没有 OS_TCB 可以分配给任务了。 注意/警告:任务堆栈必须声明 为 OS_STK 类型。 在任务中必须调用 C/OS 提供的下述过程之一:延时等待、任务挂起、等待事件发生(等待信号

11、量,消息 邮箱、消息队列),以 使其他任务得到 CPU。 用户程序中不能使用优先级 0,1,2,3,以及 OS_LOWEST_PRIO-3, OS_LOWEST_PRIO-2, OS_LOWEST_PRIO-1, OS_LOWEST_PRIO。这些优先级 C/OS 系统保留,其余的 56 个优先级提供给应用 程序。 INT8U OSTaskCreateExt(void (*task)(void *pd), void *pdata, OS_STK *ptos,INT8U prio, INT16U id, OS_STK *pbos, INT32U stk_size, void *pext, INT

12、16U opt); 所 属文件 OS_TASK.C 调用者 任务或初始化代码 开关量 无 OSTaskCreateExt()建立一个新任务。与 OSTaskCreate()不同的是,OSTaskCreateExt()允许用户设置 更多的细节内容。任务的建立可以在多任务环境启动之前,也可以在 正在运行的任务中建立,但中断处理 程序中不能建立新任务。一个任务必须为无限循环结构(如下所示),且不能有返回点。 参数 task 是指向 任务代码的指针。 Pdata 指针指向一个数据结构,该结构用来在建立任务时向任务传递参数。下例中说明 C/OS 中的任务代码 结构以及如何传递参 数 pdata:(如果在

13、程序中不使用参数 pdata,为了避免在编译中出现“参数未使用”的 警告信息,可以写一句 pdata= pdata;) ptos 为指向任务堆栈栈顶的指针。任务堆栈用来保存局部变量,函数参数,返回地址以及中断时的 CPU 寄 存器内容。任务堆栈的大小决定于任务的需要及预计的中断嵌 套层数。计算堆栈的大小,需要知道任务的 局部变量所占的空间, 可能产生嵌套调用的函数, 及中断嵌套所需空间。 如果初始化常量 OS_STK_GROWTH 设 为 1,堆栈被设为向低端增长(从内存高地址向低地址增长)。此时 ptos 应该指向任务堆栈空间的最高 地址。反之,如果 OS_STK_GROWTH 设为 0,

14、堆栈将从低地址向高地址增长。 prio 为任务的优先级。每个任务必须有一个唯一的优先级作为标识。数字越小,优先级越高。id 是任务的标 识,目前 这个参数没有实际的用途,但保留在 OSTaskCreateExt()中供今后扩展,应用程序中可设置 id 与优先级相同。 pbos 为指向堆栈底端 的指针。如果初始化常量 OS_STK_GROWTH 设为 1,堆栈被设为从内存高地址向低 地址增长。此时 pbos 应该指向任务堆栈空间的最低地址。反之,如 果 OS_STK_GROWTH 设为 0,堆栈将 从低地址向高地址增长。pbos 应该指向堆栈空间的最高地址。参数 pbos 用于堆栈检测函数 OS

15、TaskStkChk ()。 stk_size 指定任务堆栈的大小。 其单位由 OS_STK 定义: 当 OS_STK 的类型定义为 INT8U、 INT16U、 INT32U 的时候, stk_size 的单位为分别为字节(8 位)、字(16 位)和双字(32 位)。pext 是一个用户定义数据 结构的指针,可作为 TCB 的扩展。例如,当任务 切换时,用户定义的数据结构中可存放浮点寄存器的数 值, 任务运行时间, 任务切入次数等等信息。 opt 存放与任务相关的操作信息。 opt 的低 8 位由 C/OS 保留, 用户不能使用。 用户可以使用 opt 的高 8 位。 每一种操作由 opt

16、中的一位或几位指定, 当相应的位被置位时, 表示选择某种操作。 当前的 C/OS 版本支持下列操作: OS_TASK_OPT_STK_CHK:决定 是否进行任务堆栈检查。 OS_TASK_OPT_STK_CLR:决定是否清空堆栈。 OS_TASK_OPT_SAVE_FP:决定是否 保存浮点寄存器的数值。此项操作仅当处理器有浮点硬件时有效。 保存操作由硬件相关的代码完成。 其他操作请参考文件 uCOS_II.H。 返 回值 OSTaskCreateExt()的返回值为下述之一: OS_NO_ERR:函数调用成功。 OS_PRIO_EXIST: 具有该优先级的任务已经存在。 OS_PRIO_INVALID:参数指定的优先级大于 OS_LOWEST_PRIO。 OS_NO_MORE_TCB: 系统中没有 OS_TCB 可以分配给任务了。 注意/警告:任务堆栈必须声明为 OS_STK 类型。 在任务中必须进行 C/OS 提供的下述过程 之一:延时等待、任务挂起、等待事件发生(等待信号量,消息 邮箱、消息队列),以

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 医学/心理学 > 综合/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号