- 1、本文档共18页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第四章 任务设计
在基于实时操作系统的应用程序设计中,任务设计是整个应用程序的基础,其他软件设
计工作都是围绕任务设计来展开,任务设计就是设计“任务函数”和相关的数据结构。
4.1 任务函数的结构
在用户任务函数中,必须包含至少一次对操作系统服务函数的调用,否则比其优先级低
的任务将无法得到运行机会,这是用户任务函数与普通函数的明显区别。任务函数的结构按
任务的执行方式可以分为三类:单次执行类、周期执行类和事件触发类,下面分别介绍其结
构特点。
4.1.1 单次执行的任务
此类任务在创建后只执行一次,执行结束后即自行删除,其任务函数的结构如下:
程序清单L4-1 单次执行任务函数的结构
void MyTask (void *pdata) //单次执行的任务函数
{
进行准备工作的代码;
任务实体代码;
调用任务删除函数; //调用 OSTaskDel(OS_PRIO_SELF)
}
单次执行的任务函数由三部分组成:第一部分是“进行准备工作的代码”,完成各项准
备工作,如定义和初始化变量、初始化某些设备等等,这部分代码的多少根据实际需要来决
定,也可能完全空缺。第二部分是“任务实体代码”,这部分代码完成该任务的具体功能,
其中通常包含对若干系统函数的调用,除若干临界段代码(中断被关闭)外,任务的其它代
码均可以被中断,以保证高优先级的就绪任务能够及时运行。第三部分是“调用任务删除函
数”,该任务将自己删除,操作系统将不再管理它。
单次执行的任务采用“创建任务函数”来启动,当该任务被另外一个任务(或主函数)
创建时,就进入就绪状态,等到比它优先级高的任务都被挂起来时便获得运行权,进入运行
状态,任务完成后再自行删除,“启动任务”就是一个例子。
采用“启动任务”后,主函数就可以简化为三行,只负责与操作系统有关的事情,即初
始化操作系统、创建“启动任务”、启动操作系统,使主函数的内容固定下来,与具体的应
用系统无关。真正启动系统所需要的准备工作由“启动任务”来完成,它的内容与具体的系
- 1 -
统密切相关。主函数和“启动任务”的示意代码如下:
程序清单L4-2 使用启动任务
void main (void) //主函数
{
OSInit (); //初始化操作系统
OSTaskCreate(TaskStart,(void *)0,TaskStartStk[TASK_STK_SIZE-1],1);//创建启动任务
OSStart (); //启动操作系统,开始对任务进行调度管理
}
void TaskStart(void *pdata) //启动任务
{
pdata = pdata;
系统硬件初始化; // 时钟系统、中断系统、外设等等
创建各个任务; //如键盘任务、显示任务、采样任务、数据处理任务、打印任务等等
创建各种通信工具; //如信号量、消息邮箱、消息队列等等
OSTaskDel (OS_PRIO_SELF); //删除自己
}
在“启动任务”中完成与系统硬件有关的各种初始化工作,然后创建各个实质任务和所
需要的各种通信工具,至此系统才真正完成准备工作,“启动任务”的使命也就结束了,最
后将自己删除。为了保证“启动任务”能够连续运行,必须将“启动任务”的优先级选择为
最高。否则,当“启动任务”创建一个优先级高于自己的任务时,刚刚创建的任务就会立即
进入运行状态,而与这个任务关联的其它任务可能还没有创建,它使用的通信工具也还没有
创建,系统必然出错。“启动任务”调用的“自我删除”函数会进行任务调度操作,从而使
系统开始运行各个实质任务。
由于“启动任务”不是用户系统的实质任务,又占用高优先级资源和任务资源,故不常
用。更常用的方法是将“启动任务”所完成的操作交给一个用户系统的实质任务来完成。这
时,主函数和有启动功能的任务函数的示意代码如下:
程序清单L4-3 以用户任务代替启动任务
void mai
您可能关注的文档
- 第二人称代词你的用法及其符号学解释.PDF
- 第二十一届吉林省青少年科技艺术大赛作品标签.doc
- 第二十七章功能性食品的管理.doc
- 第二届华为杯创意挑战赛FAQ.doc
- 第二批调查问卷获奖通知.doc
- 第二章义务教育.PDF
- 第二章二维草绘设计.doc
- 第二章人口老化的挑战.PDF
- 第二章审核流程工厂审核安排程序.PDF
- 第二章组织结构设计理論.PDF
- 分析let s单元56ago2卷纸zheng unit56.pdf
- 塑胶材料其它分类原料pa9t 12.pdf
- md16x16数字媒体切换器设备.pdf
- 者参考项目发起人学科类型单位序列承包商修订页代码顺序典型.pdf
- 届世界天然气大会阿姆斯特丹2006add10288.pdf
- 期测试记录表每周weekly g1g6 journeys tests level 6 lesson26.pdf
- modernize-whitepaper现代化您应用程序白皮书.pdf
- anybackup产品典型案例分析.pdf
- 约克金融工程课程tfeslide32.pdf
- 广州市妇女儿童医疗中心历份教学药历01tjy.pdf
文档评论(0)