《鸿蒙智能互联设备开发(微课版)》 课件 4.3.2 任务管理接口及应用_第1页
《鸿蒙智能互联设备开发(微课版)》 课件 4.3.2 任务管理接口及应用_第2页
《鸿蒙智能互联设备开发(微课版)》 课件 4.3.2 任务管理接口及应用_第3页
《鸿蒙智能互联设备开发(微课版)》 课件 4.3.2 任务管理接口及应用_第4页
《鸿蒙智能互联设备开发(微课版)》 课件 4.3.2 任务管理接口及应用_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

4.3.2任务管理接口及应用通过本节学习,您可以:了解任务管理接口说明及应用任务管理接口及应用OpenHarmonyLiteOS-M内核的任务模块提供的功能:1.

任务管理接口功能分类接口名接口描述创建和删除任务

LOS_TaskCreateOnly创建任务,并使该任务进入suspend状态LOS_TaskCreate创建任务,并使该任务进入ready状态,如果就绪队列中没有更高优先级的任务,则运行该任务LOS_TaskDelete删除指定的任务任务管理接口及应用1.

任务管理接口功能分类接口名接口描述控制任务状态

LOS_TaskResume恢复挂起的任务,使该任务进入ready状态LOS_TaskSuspend挂起指定的任务,然后切换任务LOS_TaskJoin挂起当前任务,等待指定任务运行结束并回收其任务控制块资源LOS_TaskDelay任务延时等待,释放CPU,等待时间到期后该任务会重新进入ready状态。传入参数为Tick数目LOS_Msleep任务延时等待,释放CPU,等待时间到期后该任务会重新进入ready状态。传入参数为毫秒数LOS_TaskYield当前任务时间片设置为0,释放CPU,触发调度运行就绪任务队列中优先级最高的任务OpenHarmonyLiteOS-M内核的任务模块提供的功能:任务管理接口及应用功能分类接口名接口描述控制任务调度LOS_TaskLock锁任务调度,但任务仍可被中断打断LOS_TaskUnlock解锁任务调度LOS_Schedule触发任务调度控制任务优先级LOS_CurTaskPriSet设置当前任务的优先级LOS_TaskPriSet设置指定任务的优先级LOS_TaskPriGet获取指定任务的优先级OpenHarmonyLiteOS-M内核的任务模块提供的功能:1.

任务管理接口任务管理接口及应用功能分类接口名接口描述获取任务信息LOS_CurTaskIDGet获取当前任务的IDLOS_NextTaskIDGet获取任务就绪队列中优先级最高的任务的IDLOS_NewTaskIDGet获取任务就绪队列中优先级最高的任务的IDLOS_CurTaskNameGet获取当前任务的名称LOS_TaskNameGet获取指定任务的名称LOS_TaskStatusGet获取指定任务的状态LOS_TaskInfoGet获取指定任务的信息,包括任务状态、优先级、任务栈大小、栈顶指针SP、任务入口函数、已使用的任务栈大小等LOS_TaskIsRunning获取任务模块是否已经开始调度运行。任务信息维测LOS_TaskSwitchInfoGet获取任务切换信息,需要开启编译控制宏:LOSCFG_BASE_CORE_EXC_TSK_SWITCH。OpenHarmonyLiteOS-M内核的任务模块提供的功能:1.

任务管理接口任务管理接口及应用任务管理的一般开发流程如下:(1)锁任务调度LOS_TaskLock,防止高优先级任务调度。(2)创建任务LOS_TaskCreate。(3)解锁任务LOS_TaskUnlock,让任务按照优先级进行调度。(4)延时任务LOS_TaskDelay,任务延时等待。(5)挂起指定的任务LOS_TaskSuspend,任务挂起等待恢复操作。(6)恢复挂起的任务LOS_TaskResume。2.任务管理应用任务管理接口及应用进行任务管理时的注意事项如下:执行Idle任务时,会对待回收链表中的任务控制块和任务栈进行回收。任务名是指针,并没有分配空间,在设置任务名时,禁止将局部变量的地址赋值给任务名指针。任务栈的大小按8字节大小对齐。确定任务栈大小的原则是,够用就行,多了浪费,少了任务栈溢出。挂起当前任务时,如果已经锁任务调度,则无法挂起。Idle任务及软件定时器任务不能被挂起或者删除。在中断处理函数中或者在锁任务的情况下,执行LOS_TaskDelay会失败。锁任务调度,并不关中断,因此任务仍可被中断打断。锁任务调度必须和解锁任务调度配合使用。设置任务优先级时可能会发生任务调度。任务管理接口及应用可配置的系统最大任务数:整个系统的任务总个数,而非用户能使用的任务个数。例如:系统软件定时器多占用一个任务资源,那么用户能使用的任务资源就会减少一个。LOS_CurTaskPriSet和LOS_TaskPriSet接口不能在中断中使用,也不能用于修改软件定时器任务的优先级。LOS_TaskPriGet接口传入的taskID对应的任务未创建或者超过最大任务数,统一返回-1。在删除任务时要保证任务申请的资源(如互斥锁、信号量等)已被释放。任务管理接口及应用具体代码如下:#include<stdio.h>#include"los_task.h"#include"ohos_init.h"#include"ohos_types.h"

任务管理的应用:基本的任务操作方法,包含2个不同优先级任务的创建、任务延时、任务锁与解锁调度、挂起和恢复等操作。任务管理接口及应用具体代码如下:#include<stdio.h>#include"los_task.h"#include"ohos_init.h"#include"ohos_types.h"

/**每隔1秒输出“hellohi3861”函数**/

voidTask_hello_hi3861(void){

while(1){

printf("Hellohi3861!!!\r\n");LOS_Msleep(1000);

}

}

/**每隔2秒输出“helloohos”函数**/

voidTask_hello_ohos(void){

while(1){

printf("Helloohos!!!\r\n");

LOS_Msleep(2000);

}}任务管理接口及应用

/**任务创建函数**/

voidTask_hi(void)

{

unsignedinttask_ohos;//ohos任务ID

unsignedinttask_hi3861;//hi3861任务ID

TSK_INIT_PARAM_Staskoh;//定义ohos任务结构体

TSK_INIT_PARAM_Staskhi;//定义hi3861任务结构体

taskoh.pfnTaskEntry=(TSK_ENTRY_FUNC)Task_hello_ohos;//任务函数

taskoh.uwStackSize=1028;//任务堆栈

taskoh.pcName="Task_hello_ohos";//任务名称

taskoh.usTaskPrio=12;//任务优先级

/**创建任务**/

if(LOS_TaskCreate(&task_ohos,&taskoh)!=LOS_OK)

{

printf("Task_hello_ohoscreateFailed!\r\n");

}任务管理接口及应用

taskhi.pfnTaskEntry=(TSK_ENTRY_FUNC)Task_hello_hi3861;//任务函数

taskhi.uwStackSize=1028;//任务堆栈

taskhi.pcName="Task_hello_hi3861";//任务名称

taskhi.usTaskPrio=13;//任务优先级

/**创建任务**/

if(LOS_Ta

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论