欢迎来到天天文库
浏览记录
ID:37287194
大小:335.98 KB
页数:15页
时间:2019-05-20
《uCOS操作系统46个基本函数汇总》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、uC/OS操作系统46个基本函数汇总VoidOSInit(void);所属文件OS_CORE.C调用者启动代码开关量无OSinit()初始化μC/OS-Ⅱ,对这个函数的调用必须在调用OSStart()函数之前,而OSStart()函数真正开始运行多任务。VoidOSIntEnter(void);所属文件OS_CORE.C调用者中断开关量无OSIntEnter()通知μC/OS-Ⅱ一个中断处理函数正在执行,这有助于μC/OS-Ⅱ掌握中断嵌套的情况。OSIntEnter()函数通常和OSIntExit()函数联合使用。注意/警告:在任务级不能调用该函数。如果系统使用的处理器能够执行
2、自动的独立执行读取-修改-写入的操作,那么就可以直接递增中断嵌套层数(OSIntNesting),这样可以避免调用函数所带来的额外的开销。VoidOSIntExit(void);所属文件OS_CORE.C调用者中断开关量无OSIntExit()通知μC/OS-Ⅱ一个中断服务已执行完毕,这有助于μC/OS-Ⅱ掌握中断嵌套的情况。通常OSIntExit()和OSIntEnter()联合使用。当最后一层嵌套的中断执行完毕后,如果有更高优先级的任务准备就绪,μC/OS-Ⅱ会调用任务调度函数,在这种情况下,中断返回到更高优先级的任务而不是被中断了的任务。注意/警告:在任务级不能调用该函数
3、。并且即使没有调用OSIntEnter()而是使用直接递增OSIntNesting的方法,也必须调用OSIntExit()函数。VoidOSSchedLock(void);所属文件OS_CORE.C调用者任务或中断开关量N/AOSSchedLock()函数停止任务调度,只有使用配对的函数OSSchedUnlock()才能重新开始内核的任务调度。调用OSSchedLock()函数的任务独占CPU,不管有没有其他高优先级的就绪任务。在这种情况下,中断仍然可以被接受和执行(中断必须允许)。OSSchedLock()函数和OSSchedUnlock()函数必须配对使用。μC/OS-Ⅱ可
4、以支持多达254层的OSSchedLock()函数嵌套,必须调用同样次数的OSSchedUnlock()函数才能恢复任务调度。注意/警告:任务调用了OSSchedLock()函数后,决不能再调用可能导致当前任务挂起的系统函数:OSTimeDly(),OSTimeDlyHMSM(),OSSemPend(),OSMboxPend(),OSQPend()。因为任务调度已经被禁止,其他任务不能运行,这会导致系统死锁。VoidOSSchedUnlock(void);所属文件OS_CORE.C调用者任务或中断开关量N/A在调用了OSSchedLock()函数后,OSSchedUnlock(
5、)函数恢复任务调度。注意/警告:任务调用了OSSchedLock()函数后,决不能再调用可能导致当前任务挂起的系统函数:OSTimeDly(),OSTimeDlyHMSM(),OSSemPend(),OSMboxPend(),OSQPend()。因为任务调度已经被禁止,其他任务不能运行,这会导致系统死锁。voidOSStart(void);所属文件OS_CORE.C调用者初始代码开关量无OSStart()启动μC/OS-II的多任务环境。注意/警告:在调用OSStart()之前必须先调用OSInit()。在用户程序中OSStart()只能被调用一次。第二次调用OSStart()
6、将不进行任何操作。voidOSStatInit(void);所属文件OS_CORE.C调用者初始代码开关量OS_TASK_STAT_EN&&OS_TASK_CREATE_EXT_ENOSStatInit()获取当系统中没有其他任务运行时,32位计数器所能达到的最大值。OSStatInit()的调用时机是当多任务环境已经启动,且系统中只有一个任务在运行。也就是说,该函数只能在第一个被建立并运行的任务中调用。INT8UOSTaskChangePrio(INT8Uoldprio,INT8Unewprio);所属文件OS_TASK.C调用者任务开关量OS_TASK_CHANGE_PRI
7、O_ENOSTaskChangePrio()改变一个任务的优先级。参数oldprio是任务原先的优先级。newprio是任务的新优先级。返回值OSTaskChangePrio()的返回值为下述之一:OS_NO_ERR:任务优先级成功改变。OS_PRO_INVALID:参数中的任务原先优先级或新优先级大于或等于OS_LOWEST_PRIO。OS_PRIO_EXIST:参数中的新优先级已经存在。OS_PRIO_ERR:参数中的任务原先优先级不存在。注意/警告:参数中的新优先级必须是没有使用过的,
此文档下载收益归作者所有