发新帖我要提问
12
返回列表
打印
[应用相关]

stm32 ucos II任务调度

[复制链接]
楼主: stm32jy
手机看帖
扫描二维码
随时随地手机跟帖
21
stm32jy|  楼主 | 2018-11-29 20:31 | 只看该作者 回帖奖励 |倒序浏览
就绪状态,系统为任务配备了任务控制块且在任务就绪表中进行了就绪登记,任务已经准
备好了,但由于该任务的优先级比正在运行的任务的优先级低, 还暂时不能运行,这时任务的
状态叫做就绪状态。

使用特权

评论回复
22
stm32jy|  楼主 | 2018-11-29 20:32 | 只看该作者
运行状态,该任务获得 CPU 使用权,并正在运行中,此时的任务状态叫做运行状态。

使用特权

评论回复
23
stm32jy|  楼主 | 2018-11-29 20:36 | 只看该作者
等待状态,正在运行的任务,需要等待一段时间或需要等待一个事件发生再运行时,该任
务就会把 CPU 的使用权让给别的任务而使任务进入等待状态。

使用特权

评论回复
24
stm32jy|  楼主 | 2018-11-29 20:37 | 只看该作者
中断服务状态,一个正在运行的任务一旦响应中断申请就会中止运行而去执行中断服务程
序,这时任务的状态叫做中断服务状态。

使用特权

评论回复
25
stm32jy|  楼主 | 2018-11-29 20:43 | 只看该作者
建立任务函数
如果想让 UCOSII 管理用户的任务,必须先建立任务。 UCOSII 提供了我们 2 个建立任
务的函数: OSTaskCreat 和 OSTaskCreatExt,我们一般用 OSTaskCreat 函数来创建任务,
该函数原型为:
OSTaskCreate(void(*task)(void*pd),void*pdata,OS_STK*ptos,INTU prio);

使用特权

评论回复
26
stm32jy|  楼主 | 2018-11-29 20:44 | 只看该作者
函数包括 4 个参数: task:是指向任务代码的指针; pdata:是任务开始执行时,传
递给任务的参数的指针; ptos:是分配给任务的堆栈的栈顶指针; prio 是分配给任务的优
先级。

使用特权

评论回复
27
stm32jy|  楼主 | 2018-11-29 20:46 | 只看该作者
每个任务都有自己的堆栈,堆栈必须申明为 OS_STK 类型,并且由连续的内存空间组
成。可以静态分配堆栈空间,也可以动态分配堆栈空间。

使用特权

评论回复
28
stm32jy|  楼主 | 2018-11-29 21:00 | 只看该作者
任务删除函数
所谓的任务删除,其实就是把任务置于睡眠状态,并不是把任务代码给删除了。 UCOSII
提供的任务删除函数原型为:
INT8U OSTaskDel(INT8U prio);
其中参数 prio 就是我们要删除的任务的优先级,可见该函数是通过任务优先级来实现
任务删除的。
特别注意:任务不能随便删除,必须在确保被删除任务的资源被释放的前提下才能删
除!

使用特权

评论回复
29
stm32jy|  楼主 | 2018-11-29 21:01 | 只看该作者
请求任务删除函数
前面提到,必须确保被删除任务的资源被释放的前提下才能将其删除,所以我们通过
向被删除任务发送删除请求,来实现任务释放自身占用资源后再删除。 UCOSII 提供的请
求删除任务函数原型为:
INT8U OSTaskDelReq(INT8U prio);

使用特权

评论回复
30
stm32jy|  楼主 | 2018-11-29 21:08 | 只看该作者
改变任务的优先级函数
UCOSII 在建立任务时,会分配给任务一个优先级,但是这个优先级并不是一成不变的,
而是可以通过调用 UCOSII 提供的函数修改。 UCOSII 提供的任务优先级修改函数原型为:
INT8U OSTaskChangePrio(INT8U oldprio,INT8U newprio);

使用特权

评论回复
31
stm32jy|  楼主 | 2018-11-29 21:15 | 只看该作者
任务挂起函数
任务挂起和任务删除有点类似,但是又有区别,任务挂起只是将被挂起任务的就绪标
志删除,并做任务挂起记录,并没有将任务控制块任务控制块链表里面删除, 也不需要释
放其资源, 而任务删除则必须先释放被删除任务的资源,并将被删除任务的任务控制块也
给删了。被挂起的任务,在恢复(解挂)后可以继续运行。 UCOSII 提供的任务挂起函数
原型为:
INT8U OSTaskSuspend(INT8U prio);

使用特权

评论回复
32
stm32jy|  楼主 | 2018-11-29 21:16 | 只看该作者
任务恢复函数
有任务挂起函数,就有任务恢复函数,通过该函数将被挂起的任务恢复,让调度器能
够重新调度该函数。 UCOSII 提供的任务恢复函数原型为:
INT8U OSTaskResume(INT8U prio);

使用特权

评论回复
33
paotangsan| | 2018-12-4 12:59 | 只看该作者
现在这个系统是免费的吗

使用特权

评论回复
34
renzheshengui| | 2018-12-4 13:01 | 只看该作者
如何进行移植呢

使用特权

评论回复
35
wakayi| | 2018-12-4 13:07 | 只看该作者
非常感谢分享啊

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则