嵌入式μCOS-II内核实验一(任务管理).ppt
内核实验(一),任务的基本管理,实验目的,理解任务管理的基本原理,了解任务的各个基本状态及其变迁过程掌握C/OS-II中任务管理的基本方法(创建、启动、挂起、解挂任务)熟练使用C/OS-II任务管理的基本系统调用,本实验设计了Task0、Task1两个任务:任务Task0不断地挂起自己,再被任务Task1解挂,两个任务不断地切换执行。,实验设计,一个任务通常是一个无限的循环,C/OS-中的任务,必须给每个任务赋以不同的优先级,C/OS-总是运行进入就绪态的优先级最高的任务,实验设计,运行流程,运行流程,t1时刻后应用任务开始轮转,运行流程,#define OS_LOWEST_PRIO 14/*任务优先级不可以大于14*/,#define OS_TASK_CREATE_EN 1/*允许使用OSTaskCreate()*/,#define OS_TASK_SUSPEND_EN 1/*允许使用OSTaskSuspend()and OSTaskResume()*/,#define OS_MAX_TASKS 3/*最多可以创建3个任务*/,操作系统配置,OSTaskCreate():建立一个新任务,本实验中所用到的C/OS-II相关函数,OSTaskSuspend():无条件挂起一个任务,OSTaskResume():唤醒一个挂起的任务,OSTimeDly():将一个任务延时若干个时钟节拍,、创建起始任务TaskStart,OSTaskCreate(TaskStart,(void*)0,源程序说明,TaskStart负责:,安装时钟中断服务例程ucos_x86_idt_set_handler(0 x20,(void*)OSTickISR,0 x8e00);初始化操作系统时钟ucos_timer_init();创建应用任务TaskStartCreateTasks();,源程序说明,2、创建应用任务Task0和Task1,OSTaskCreate(Task0,(void*),源程序说明,Task0功能:挂起自己,void Task0(void*pdata)for(;)/*无限循环*/err=OSTaskSuspend(5);/*suspend itself*/,3、应用任务,源程序说明,Task1功能:唤醒Task0,void Task0(void*pdata)for(;)/*无限循环*/.err=OSTaskResume(5);/*resume task0*/.,源程序说明,输出信息,