- 1、本文档共39页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
本篇包括第五至九章,详细介绍基于嵌入式实时操作系统μC/OS-Ⅱ的任务级别的应用程序设计方法,依次讲述μC/OS-Ⅱ工作原理及其移植、μC/OS-Ⅱ任务、μC/OS-Ⅱ信号量与互斥信号量、μC/OS-Ⅱ消息邮箱与队列以及μC/OSⅡ高级系统组件。这部分内容结合了具体的工程实例进行介绍,重点在于用户任务、信号量和消息邮箱的学习。;第五章 μc/OS-Ⅱ工作原理及其移植;5.1.1 μC/OS-Ⅱ系统文件与配置
从上下载到最新的μC/OS-Ⅱ嵌入式实时操作系统,最新版本号为
V2.91,μC/OS-Ⅱ共有14个系统文件,如表5-1所示。
表5-1 μC/OS-Ⅱ系统文件
; 如果对μC/OS-Ⅱ系统内核工作原理感兴趣,需要认真阅读表5-1中的全部文件,大约有11000
多行源代码。如果重点关注μC/OS-Ⅱ系统的应用程序设计,可以只关心系统配置文件
os_cfg.h,通过该文件对μC/OS-Ⅱ系统进行裁剪,该文件内容如下:
程序段5-1os_cfg.h文件
1 //Filename:os_cfg.h,OwnedbyJ.J.Labrosse,Micrium
2
3 #ifndefOS_CFG_H
4 #defineOS_CFG_H
5
6 #defineOS_APP_HOOKS_EN 1u
7 #defineOS_ARG_CHK_EN 0u
8 #defineOS_CPU_HOOKS_EN 1u
9
第6行OS_APP_HOOKS_EN为1表示μC/OS-Ⅱ支持用户定义的应用程序钩子函数,缺省为支持。
第7行OS_ARG_CHK_EN为1表示系统函数进行参数合法性检查,为0表示不做合法性检查,缺省为0,
建议设为1。第8行OS_CPU_HOOKS_EN为1表示支持系统钩子函数,为0表示不支持,缺省为1。; 10 #defineOS_DEBUG_EN 1u
11
12 #defineOS_EVENT_MULTI_EN 1u
13 #defineOS_EVENT_NAME_EN 1u
14
第10行OS_DEBUG_EN为1,使调试变量有效,缺省为1。第12行OS_EVENT_MULTI_EN为1表示支持
多事件请求系统函数,缺省为1,建议设为0。第13行OS_EVENT_NAME_EN为1表示可为各个组件指
定名称,缺省为1,建议为1。
15 #defineOS_LOWEST_PRIO 63u
16
第15行OS_LOWEST_PRIO表示用户任务的最大优先级号值,缺省为63,μC/OS-Ⅱ最多可支持
255个任务,因此,这里OS_LOWEST_PRIO的值最大不要超过254(因为优先级号从0开始,计数到第
254时,共有255个任务;255(即0xFF)专用于表示当前正在执行任务的任务优先级号)。; 17 #defineOS_MAX_EVENTS 10u
18 #defineOS_MAX_FLAGS 5u
19 #defineOS_MAX_MEM_PART 5u
20 #defineOS_MAX_QS 4u
21 #defineOS_MAX_TASKS 20u
22
第17行OS_MAX_EVENTS指定系统中事件控制块的最大数量,缺省值为10;第18行
OS_MAX_FLAGS指定事件标志组的最大个数,缺省值为5;第19行OS_MAX_MEM_PART指定内存分区
的最大个数,缺省值为5;第20行OS_MAX_QS指定消息队列的最大个数,缺省值为4;第21行
OS_MAX_TASKS指定最多可创建的任务个数,缺省值为20,最小值为2,因为μC/OSⅡ系统要求必
须创建空闲任务(系统任务)和至少要有一个用户任务。
23 #defineOS_SCHED_LOCK_EN 1u
24
25 #defineOS_TICK_STEP_EN 1u
26 #defineOS_TICKS_PER_SEC 100u
27
; 第23行OS_SCHED_LOCK_EN为1表示用于任务上锁和解锁的函数OSSchedLock和OSSchedUnLock
可用,为0表示不可用;第25行OS_TICK_STEP_EN为1表示μC/OS-View可观测时钟节拍;第26行
为时钟节拍频率,默认值为100Hz。
28 #defineOS_TASK_TMR_STK_SIZE 128u
29 #defineOS_TASK_STAT_STK_SIZE 128u
30 #defineOS_TASK_IDLE_STK_SIZE
文档评论(0)