UCOSII任务管理及任务创建方法简介

需积分: 9 2 下载量 78 浏览量 更新于2024-02-03 收藏 423KB DOC 举报
本文主要关注ucosii任务管理中的任务建立和任务堆栈。在ucosii任务管理中,任务的建立是通过调用OSTaskCreate()或OSTaskCreateExt()函数来实现的。 OSTaskCreate()函数用于建立一个任务,其原型如下: ```c INT8U OSTaskCreate (void (*task)(void *p_arg), void *p_arg, OS_STK *ptos, INT8U prio); ``` 该函数接受4个参数:任务的入口函数task,入口函数的参数p_arg,任务的堆栈指针ptos和任务的优先级prio。当调用OSTaskCreate()函数时,系统会为该任务分配堆栈空间并设置任务的优先级。同时,由于堆栈空间是在运行时动态分配的,因此只要堆栈指针未分配完,则可以创建任意数量的任务。 OSTaskCreateExt()函数也用于建立一个任务,其原型如下: ```c INT8U OSTaskCreateExt (void (*task)(void *p_arg), void *p_arg, OS_STK *ptos, INT8U prio, INT32U id, OS_STK *pbos, INT32U stk_size, void *pext, INT16U opt); ``` 除了和OSTaskCreate()函数相同的前4个参数外,OSTaskCreateExt()函数还有4个额外的参数。其中,id参数用于指定任务的ID,pbos参数用于指定任务的双向通信或事件控制块,stk_size参数用于指定任务堆栈的大小,pext参数用于指定任务的扩展信息,opt参数用于指定任务的选项。 在ucosii中,任务的堆栈是由OS_STK类型的数组实现的。OS_STK类型通常定义为int或long类型,其大小要足够容纳任务需要的所有寄存器和局部变量。任务的堆栈空间由系统自动分配和管理,无需开发人员手动分配和释放。当任务结束时,系统会自动释放任务堆栈空间。 通过以上的功能和特点,ucosii任务管理提供了灵活且高效的任务建立和管理方式。开发人员可以根据实际需求创建任务,并通过设置任务的优先级和堆栈空间大小来调整任务的执行顺序和资源使用情况。同时,ucosii还提供了函数原型清晰、参数明确的任务建立接口,使开发人员能够更加方便地创建任务。任务的堆栈空间自动分配和释放的特点,使得任务的管理更加简单和安全。 综上所述,ucosii任务管理提供了强大的任务建立和管理功能,通过OSTaskCreate()和OSTaskCreateExt()函数,开发人员可以轻松创建任务,并通过设置任务的优先级和堆栈空间大小来实现任务的灵活调度和资源管理。同时,ucosii任务管理还提供了自动分配和释放任务堆栈空间的特点,使任务的管理更加简单和安全。这些特点使ucosii成为一款功能强大且高效的任务管理系统。
2019-01-17 上传
关于UCOSII实时操作系统 第一讲 初识uCOSII 4 1、uCOSII单任务实验: 4 2、uCOSII多任务实验: 6 3、任务状态之间的转换: 9 4、空闲任务和统计任务简介: 9 5、任务的三要件: 9 程序代码、私有堆栈、任务控制块 9 6、任务控制块TCB(P80) 9 7、创建任务 9 8、任务的栈空间 10 9、栈的增长方向: 10 第二讲 调度运行机制 11 1、任务挂起和恢复 11 2、任务挂起、恢复的状态转换 13 3、时钟节拍ISR 15 4、时钟节拍函数OSTimtick() 16 5、延时系统调用 16 第三讲 任务管理uCOSII 17 1、任务删除 17 2、任务请求删除实验 19 3、在源码中增加打印信息一般步骤 24 4、OSTaskDelReq()函数理解流程图 25 第四讲 互斥性信号量管理 26 1、优先级反转 26 2、信号量SEM使用 26 3、互斥信号量Mutux使用 29 4、关于信号量程序分析 32 5、关于互斥信号量分析 32 6、OSMutexPend()函数流程图 33 7、OSMutexPost()函数流程图 33 第五讲 消息邮箱 34 1、基本概念 34 2、对于OSMboxPend()理解 34 3、对于OSMboxPost()理解 34 4、消息邮箱管理一般程序 35 5、使用OSMboxQuery() 38 6、OSMboxPend()函数Timeout等待超时程序 38 7、OSMboxPost()函数邮箱状态为FUll程序 40 8、关于OSTimeTickHook(void)使用 41 第六讲 信号量集 43 1、信号量集案例 43 2、OSFlagPend()源码 46 3、OSFlagPost()源码 51 第七讲 动态内存 54 1、内存管理基本概念 54 2、内存管理基本概念 54 3、内存管理案例 54 4、案例分析 69 5、教学案例: 71