搜索
bottom↓
回复: 5

第七天 UC/OS-II的学习

[复制链接]

出0入0汤圆

发表于 2012-3-8 22:55:43 | 显示全部楼层 |阅读模式
第七天
任务管理 主要是:应用程序中建立程序、删除任务、改变任务的优先级、挂起和恢复任务、获得任务的信息。
1.        建立任务 OSTaskCreate()
1.1        任务可以再多任务调度刚开始时建立,也可以在其他任务运行的时候建立。
1.2        在启动之前,即OSStart()函数之前,必须建立一个任务。
1.3        任务不能由ISR建立。OStaskCreate()函数代码如下:
1.4        建立任务函数传递四个参数 task :任务代码的指针
Pdata : 当任务开始执行时传递给任务的参数的指针
Ptos : 分配给任务的堆栈的栈顶指针
Prio : 分配给任务的优先级
              如:OSTaskCreate(Task1,(void*)0,&Task1Stk[0],3); //传递task1, 无参数指针,栈顶指向Task1Stk[0], 优先级是3.
1.5        MCS-51单片机堆栈是从下往上涨的,所以OS_STK_GROWTH = 0;
1.6        OSTaskStkInit()函数完成建立堆栈的任务。
2.        建立任务 OSTaskCreateExt()
2.1        需要9个参数。id 优先级标号 未来扩展
Pbos : 指向任务栈底的指针,用于堆栈的检验
Stk_size : 指定堆栈队员的数目
Pext : 指向用户附加的数据域的指针
Opt  :  设定OSTaskCreateExt()的选项,是否允许堆栈检验、将堆栈清零、是否要进行浮点操作等。
3.        任务堆栈
3.1        堆栈必须声明为OS_STK类型,由连续的内存空间组成。可以静态分配(如:         static OS_STK MYTaskStack[stack_size]; 或者 OS_STK MYTaskStack[stack_size];),也可动态分配。 (用 malloc() 函数分配,但是会产生内存碎片)
3.2        注意堆栈的增长方向,在创建时OSTaskCreate()时,堆栈的起始地址是不同的。
4.        检验堆栈 OSTaskStkChk()
4.1        在堆栈检验时,要求在任务建立的时候堆栈中存储的是0,即被清零。
4.2        UC/OS-II需要知道堆栈栈底和堆栈的大小。 都存在了OS_TCB中。
5.        删除堆栈 OSTaskDel()
5.1        不能删除空闲任务。不能再ISR中删除一个任务。
5.2        参数是优先级。
6.        请求删除任务 OSTaskDelReq()
用于删除一个占有系统资源的任务。在删除任务之前需要先施放任务占用的系统资源。
7.        改变任务的优先级 OSTaskChangePrio()
7.1        允许用户动态改变优先级。但不能改变空闲任务的优先级。
8.        挂起任务 OSTaskSuspend()【suspend是悬浮 暂停的意思】
8.1 被挂起的任务只能通过调用OSTaskResume()函数来恢复。
9.  恢复任务OSTaskResume()
10.  获得任务的信息 OSTaskQuery()
10.1 获得的是对应任务的OS_TCB中内容的拷贝。
10.2 是有用的 调试工具。不要试图改变里面的指针。

燕山大学 电气工程学院 09级检测技术与仪器

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

发表于 2012-3-8 22:58:23 | 显示全部楼层
真羡慕楼主这么坚持! 我学习的就没这么顺利!  


打算学习UCOS中!  顶起! 

出0入0汤圆

发表于 2012-3-9 00:07:19 | 显示全部楼层
顶一下

出0入0汤圆

发表于 2012-3-9 08:19:21 | 显示全部楼层
不错

出0入0汤圆

发表于 2012-3-9 08:34:09 | 显示全部楼层
顶!!!

出0入0汤圆

发表于 2012-4-7 15:00:33 | 显示全部楼层
精神可嘉,坚持就是胜利,而且总结也很好。
问下楼主,我在一个任务(非需要删除的)中执行OSTaskSuspend(INT8U prio),再执行OSTaskResume(INT8U prio)能使任务恢复,但是先执行OSTaskDel (INT8U prio)再执行OSTaskResume(INT8U prio)却不行,能帮忙解释下吗?
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-26 01:16

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表