首页 理论教育 嵌入式系统-任务管理及相关函数介绍

嵌入式系统-任务管理及相关函数介绍

时间:2023-11-23 理论教育 版权反馈
【摘要】:关于任务的结构以及μC/OS-Ⅱ任务的一些特性前面已经介绍,本小节介绍任务管理,这部分包括如何在应用程序中建立任务、删除任务、改变任务的优先级及挂起和恢复任务,以及如何获得有关任务的信息。系统对任务的管理主要通过以下函数实现:①OSTaskCreate()和OSTaskCreateExt()函数,用于建立一个任务。可在多任务调度开始前或在其他任务的执行过程中建立任务。堆栈是由连续的内存空间组成的,每个任务都有自己堆栈。

嵌入式系统-任务管理及相关函数介绍

关于任务的结构以及μC/OS-Ⅱ任务的一些特性前面已经介绍,本小节介绍任务管理,这部分包括如何在应用程序中建立任务、删除任务、改变任务的优先级及挂起和恢复任务,以及如何获得有关任务的信息。 系统对任务的管理主要通过以下函数实现:

①OSTaskCreate()和OSTaskCreateExt()函数,用于建立一个任务。 可在多任务调度开始前或在其他任务的执行过程中建立任务。 OSTaskCreateExt()是OSTaskCreate()的扩展版本,虽然提供了一些附加的功能,但是会增加一些额外的开销。 注意:任务不能由中断服务程序(ISR)来建立。

②OSTaskStkChk()函数,用于检验堆栈。 堆栈是由连续的内存空间组成的,每个任务都有自己堆栈。 如果为任务分配过多的堆栈空间,就会减少自己的应用程序代码所需的内存空间,因此,μC/OS-Ⅱ提供OSTaskStkChk()函数来检验堆栈空间大小。

③OSTaskDel()函数,用于删除一个任务,功能是将任务返回并使之处于休眠状态,这样μC/OS-Ⅱ将不再调用该任务。 注意:不能删除空闲任务。

④OSTaskDelReq()函数,用于请求删除一个任务,当Task1 拥有内存缓冲区或信号量之类的资源,而Task2 想删除该任务时,如果删除了Task1,则这些资源就可能会由于未被释放而丢失。 在这种情况下,可以通过OSTaskDelReq()函数,让拥有这些资源的任务在使用完资源后,先释放资源,再删除自己。 注意:发出删除任务请求的任务Task2 和要删除的任务Task1 都需要调用OSTaskDelReq()函数。(www.xing528.com)

⑤OSTaskChangePrio()函数,用于改变任务的优先级。 任务建立时,系统为任务分配了一个优先级。 之后,用户可以通过调用OSTaskChangePrio()函数来动态地改变任务的优先级。注意:用户不能改变空闲任务的优先级。

⑥OSTaskSuspend()函数,用于挂起任务。 注意:不能挂起空闲任务。

⑦OSTaskResume()函数,用于恢复挂起的任务。 注意:不能恢复空闲任务。

⑧OSTaskQuery()函数,用于获得自身或其他应用任务的信息,它获得的是指定任务的任务控制块OS_TCB 中内容的拷贝

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈