完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
μC/OS-III 任务管理在实际应用中,我们首先做的是创建任务。
创建任务就是将任务控制块、任务堆栈、任务代码联系在一起,并且初始化任务控制块相应的字段。 但当一个任务不需要再运行了,我们就可以将他删除。删除任务不是说删除任务代码,而是μC/OS-III不再管理这个任务了。 而有时候我们因为某些原因需要暂停运行一个任务,并且可能以后还要运行,所以我们就不能删除掉任务,而是将任务挂起。需要运行时可以再将任务恢复。 此外,μC/OS-III是支持多个任务拥有一个优先级的,对这些任务采用时间片轮转调度方法进行任务调度。 创建任务我们一般使用的是调用OSTaskCreate()函数。但在调用这个函数前我们一般需要先声明、定义一些东西。 第一行代码 定义了起始任务的优先级 第二行代码 定义了起始任务的堆栈的大小 第三行代码 声明了起始任务的任务控制块 第四行代码 声明了起始任务的堆栈数组 第五行代码 声明了起始任务的任务函数原型 接着我们再调用API创建任务。 在main函数中,调用OSInit初始化μC/OS-III的内部变量和数据结构,并会创建2-5个系统任务。之后我们通过OSTaskCreate()创建一个任务,包含13个参数。 参数1 (OS_TCB * )&StartTaskTCB 分配了该任务的任务控制块的地址。 参数2 (CPU_CHAR * )“start task” 可以给创建的任务指定一个名字,并且μC/OS-III在OS-TCB中放置了一个指向任务名称的指针。 参数3 (OS_TASK_PTR )start_task 任务代码的其实地址,并且典型的μC/OS-III任务是一各无限的循环。 参数4 (void * )0 任务第一次运行时会接收到的参数,即p_arg。我们在此传递的是一个NULL指针,因此p_arg就是一个NULL指针。 参数5 (OS_PRIO )START_TASK_PRIO 任务的优先级。任务的优先级可以设置为1和OS_CFG_PRIO_MAX, 。数值越小优先级越高。 参数6 (CPU_STK * )&START_TASK_STK[0] 堆栈空间的基地址 参数7 (CPU_STK_SIZE)START_STK_SIZE/10 任务栈的深度标记,该参数的数值代表了栈溢出警告之前栈内应该剩余的空间大小。 参数8 (CPU_STK_SIZE)START_STK_SIZE 任务栈内的大小, 参数9 (OS_MSG_QTY )0 任务内部消息队列能够接收的最大消息数目,为0时禁止接收消息。 参数10 (OS_TICK )0 当使能时间片轮转时的时间片长度,为0时为默认长度。 参数11 (void * )0 表示用户补充的存储区 参数12 (OS_OPT)OS_OPT_TASK_STK_CHK|OS_OPT_TASK_ STK_CLR 参数定义任务的可选项(options)。一般有如下选择。 本例中,我指定选项表示系统运行时要检查任务栈的使用情况,并且在创建任务栈是栈空间全部清0。 参数13 (OS_ERR * )&err 该参数表示存放该函数错误时的返回值 一般来说,需要用开始任务负责创建任务函数。 由于开始任务创建完任务后,不需要再运行该任务,所以可以将其删除。 任务删除可以调用API函数OSTaskDel() 参数1 (OS_TCB*)&Task2 指向要删除的任务TCB,也可以传递一个NULL指针来删除调用OSTaskDel()函数的任务本身。 参数2 &err 函数返回的错误码 任务务挂起和恢复可以调用API函数 OSTaskSuspend()和OSTaskResume() 其参数与任务删除几乎一致,不再过多陈述。 时间片轮转调度进行同级任务调度前,在os_cfg.hOS_CFG_SCHED_RO UND_ROBIN_EN被定义为1,这样操作系统中有关时间片轮转的代码才会被编译。 其次是对于任务的配置中设定好需要的时间片。 如图所示设置为3个时间片,由于时钟节拍为5毫秒,故该任务在时间片轮转为15毫秒的运行时间。 |
|
|
|
只有小组成员才能发言,加入小组>>
937 浏览 1 评论
1092 浏览 1 评论
12507 浏览 0 评论
5923 浏览 3 评论
17719 浏览 6 评论
1022浏览 1评论
1013浏览 1评论
939浏览 1评论
4733浏览 1评论
1093浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 10:34 , Processed in 0.667026 second(s), Total 47, Slave 39 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号