第章参考手册模板.doc
《第章参考手册模板.doc》由会员分享,可在线阅读,更多相关《第章参考手册模板.doc(68页珍藏版)》请在咨信网上搜索。
1、OSInit( )第11章参考手册本章提供了C/OS-用户指南。每一个用户能够调用内核函数全部按字母次序加以说明,包含:l 函数功效描述l 函数原型l 函数名称及源代码l 函数使用到常量l 函数参数l 函数返回值l 特殊说明和注意点Void OSInit(void);所属文件调用者开关量OS_CORE.C开启代码无OSinit()初始化C/OS-,对这个函数调用必需在调用OSStart()函数之前,而OSStart()函数真正开始运行多任务。参数无返回值无注意/警告必需先于OSStart()函数调用范例:void main (void) . OSInit(); /* 初始化 uC/OS-II
2、*/ . OSStart(); /*开启多任务内核 */OSIntEnter( )Void OSIntEnter(void);所属文件调用者开关量OS_CORE.C中止无OSIntEnter()通知C/OS-一个中止处理函数正在实施,这有利于C/OS-掌握中止嵌套情况。OSIntEnter()函数通常和OSIntExit()函数联合使用。参数无返回值无注意/警告在任务级不能调用该函数。假如系统使用处理器能够实施自动独立实施读取-修改-写入操作,那么就能够直接递增中止嵌套层数(OSIntNesting),这么能够避免调用函数所带来额外开销。范例一:(Intel 80x86实模式, 在大模式下编译
3、,real mode,large model) ISRx PROC FAR PUSHA ; 保留中止现场 PUSH ES PUSH DS; MOV AX, DGROUP ; 读入数据段 MOV DS, AX; CALL FAR PTR _OSIntEnter ; 通知内核进入中止 . . POP DS ; 恢复中止现场 POP ES POPA IRET ; 中止返回 ISRx ENDP范例二:(Intel 80x86实模式, 在大模式下编译,, real mode , large model) ISRx PROC FAR PUSHA ; 保留中止现场 PUSH ES PUSH DS; MOV
4、AX, DGROUP ; 读入数据段 MOV DS, AX; INC BYTE PTR _OSIntNesting ; 通知内核进入中止 . . . POP DS ; 恢复中止现场 POP ES POPA IRET ; 中止返回 ISRx ENDPOSIntExit( )Void OSIntExit(void);所属文件调用者开关量OS_CORE.C中止无OSIntExit()通知C/OS-一个中止服务已实施完成,这有利于C/OS-掌握中止嵌套情况。通常OSIntExit()和OSIntEnter()联合使用。当最终一层嵌套中止实施完成后,假如有更高优先级任务准备就绪,C/OS-会调用任务调度
5、函数,在这种情况下,中止返回到更高优先级任务而不是被中止了任务。参数无返回值无注意/警告在任务级不能调用该函数。而且即使没有调用OSIntEnter()而是使用直接递增OSIntNesting方法,也必需调用OSIntExit()函数。范例:(Intel 80x86 实模式, 在大模式下编译, real mode , large model) ISRx PROC FAR PUSHA ; 保留中止现场 PUSH ES PUSH DS . . CALL FAR PTR _OSIntExit ; 通知内核进入中止 POP DS ; 恢复中止现场 POP ES POPA IRET ; 中止返回 ISR
6、x ENDPOSMboxAccept( )Void *OSMboxAccept(OS_EVENT *pevent);所属文件调用者开关量OS_MBOX.C任务或中止OS_MBOX_ENOSMboxAccept()函数查看指定消息邮箱是否有需要消息。不一样于OSMboxPend()函数,假如没有需要消息,OSMboxAccept()函数并不挂起任务。假如消息已经抵达,该消息被传输到用户任务而且从消息邮箱中清除。通常中止调用该函数,因为中止不许可挂起等候消息。参数pevent 是指向需要查看消息邮箱指针。当建立消息邮箱时,该指针返回到用户程序。(参考OSMboxCreate()函数)。返回值假如消
7、息已经抵达,返回指向该消息指针;假如消息邮箱没有消息,返回空指针。注意/警告必需先建立消息邮箱,然后使用。范例:OS_EVENT *CommMbox;void Task (void *pdata) void *msg; pdata = pdata; for (;) msg = OSMboxAccept(CommMbox); /* 检验消息邮箱是否有消息*/ if (msg != (void *)0) . /* 处理消息*/ . else . /*没有消息*/ . . . OSMboxCreate( )OS_EVENT *OSMboxCreate(void *msg);所属文件调用者开关量OS_
8、MBOX.C任务或开启代码OS_MBOX_ENOSMboxCreate()建立并初始化一个消息邮箱。消息邮箱许可任务或中止向其它一个或多个任务发送消息。参数msg 参数用来初始化建立消息邮箱。假如该指针不为空,建立消息邮箱将含有消息。返回值指向分配给所建立消息邮箱事件控制块指针。假如没有可用事件控制块,返回空指针。注意/警告必需先建立消息邮箱,然后使用。范例:OS_EVENT *CommMbox; void main(void) . . OSInit(); /* 初始化C/OS- */ . . CommMbox = OSMboxCreate(void *)0); /* 建立消息邮箱 */ OS
9、Start(); /* 开启多任务内核 */OSMboxPend( )Void *OSMboxPend ( OS_EVNNT *pevent, INT16U timeout, int8u *err );所属文件调用者开关量OS_MBOX.C任务OS_MBOX_ENOSMboxPend()用于任务等候消息。消息经过中止或另外任务发送给需要任务。消息是一个以指针定义变量,在不一样程序中消息使用也可能不一样。假如调用OSMboxPend()函数时消息邮箱已经存在需要消息,那么该消息被返回给OSMboxPend()调用者,消息邮箱中清除该消息。假如调用OSMboxPend()函数时消息邮箱中没有需要消
10、息,OSMboxPend()函数挂起目前任务直到得到需要消息或超出定义等候超时时间。假如同时有多个任务等候同一个消息,C/OS-默认最高优先级任务取得消息而且任务恢复实施。一个由OSTaskSuspend()函数挂起任务也能够接收消息,但这个任务将一直保持挂起状态直到经过调用OSTaskResume()函数恢复任务运行。参数pevent 是指向立即接收消息消息邮箱指针。该指针值在建立该消息邮箱时能够得到。(参考OSMboxCreate()函数)。Timeout 许可一个任务在经过了指定数目标时钟节拍后还没有得到需要消息时恢复运行。假如该值为零表示任务将连续等候消息。最大等候时间为65,535个
11、时钟节拍。这个时间长度并不是很严格,可能存在一个时钟节拍误差,因为只有在一个时钟节拍结束后才会降低定义等候超时时钟节拍。Err 是指向包含错误码变量指针。OSMboxPend()函数返回错误码可能为下述多个:l OS_NO_ERR :消息被正确接收。l OS_TIMEOUT :消息没有在指定周期数内送到。l OS_ERR_PEND_ISR :从中止调用该函数。即使要求了不许可从中止调用该函数,但C/OS-仍然包含了检测这种情况功效。l OS_ERR_EVENT_TYPE :pevent 不是指向消息邮箱指针。返回值OSMboxPend()函数返回接收消息并将 *err置为OS_NO_ERR。假
12、如没有在指定数目标时钟节拍内接收到需要消息,OSMboxPend()函数返回空指针而且将 *err设置为OS_TIMEOUT。注意/警告必需先建立消息邮箱,然后使用。不许可从中止调用该函数。范例:OS_EVENT *CommMbox;void CommTask(void *pdata) INT8U err; void *msg; pdata = pdata; for (;) . . msg = OSMboxPend(CommMbox, 10, &err); if (err = OS_NO_ERR) . . /* 消息正确接收 */ . else . . /* 在指定时间内没有接收到消息*/ .
13、 . . OSMboxPost( )INT8U OSMboxPost(OS_EVENT *pevent, void *msg);所属文件调用者开关量OS_MBOX.C任务或中止OS_MBOX_ENOSMboxPost()函数经过消息邮箱向任务发送消息。消息是一个指针长度变量,在不一样程序中消息使用也可能不一样。假如消息邮箱中已经存在消息,返回错误码说明消息邮箱已满。OSMboxPost()函数立即返回调用者,消息也没有能够发到消息邮箱。假如有任何任务在等候消息邮箱消息,最高优先级任务将得到这个消息。假如等候消息任务优先级比发送消息任务优先级高,那么高优先级任务将得到消息而恢复实施,也就是说,发
14、生了一次任务切换。参数pevent 是指向立即接收消息消息邮箱指针。该指针值在建立该消息邮箱时能够得到。(参考OSMboxCreate()函数)。Msg 是立即实际发送给任务消息。消息是一个指针长度变量,在不一样程序中消息使用也可能不一样。不许可传输一个空指针,因为这意味着消息邮箱为空。返回值OSMboxPost()函数返回值为下述之一:l OS_NO_ERR :消息成功放到消息邮箱中。l OS_MBOX_FULL :消息邮箱已经包含了其它消息,不空。l OS_ERR_EVENT_TYPE :pevent 不是指向消息邮箱指针。注意/警告必需先建立消息邮箱,然后使用。不许可传输一个空指针,因为
15、这意味着消息邮箱为空。范例:OS_EVENT *CommMbox;INT8U CommRxBuf100;void CommTaskRx(void *pdata) INT8U err; pdata = pdata; for (;) . err = OSMboxPost(CommMbox, (void *)&CommRxBuf0); . OSMboxQuery( )INT8U OSMboxQuery(OS_EVENT *pevent, OS_MBOX_DATA *pdata);所属文件调用者开关量OS_MBOX.C任务或中止OS_MBOX_ENOSMboxQuery()函数用来取得消息邮箱信息。用
16、户程序必需分配一个OS_MBOX_DATA数据结构,该结构用来从消息邮箱事件控制块接收数据。经过调用OSMboxQuery()函数能够知道任务是否在等候消息和有多少个任务在等候消息,还能够检验消息邮箱现在消息。参数pevent 是指向立即接收消息消息邮箱指针。该指针值在建立该消息邮箱时能够得到。(参考OSMboxCreate()函数)。Pdata 是指向OS_MBOX_DATA数据结构指针,该数据结构包含下述组员:Void *OSMsg;/* 消息邮箱中消息复制 */INT8U OSEventTblOS_EVENT_TBL_SIZE;/*消息邮箱等候队列复制*/INT8U OSEventGrp
17、;返回值OSMboxQuery()函数返回值为下述之一:l OS_NO_ERR :调用成功l OS_ERR_EVENT_TYPE :pevent 不是指向消息邮箱指针。注意/警告必需先建立消息邮箱,然后使用。范例:OS_EVENT *CommMbox;void Task (void *pdata) OS_MBOXDATA mbox_data; INT8U err; pdata = pdata; for (;) . err = OSMboxQuery(CommMbox, &mbox_data); if (err = OS_NO_ERR) . /* 假如mbox_data.OSMsg为非空指针,说
18、明消息邮箱非空*/ . OSMemCreate( )OS_MEM *OSMemCreate( void *addr, INT32U nblks ,INT32U blksize, INT8U *err);所属文件调用者开关量OS_MEM.C任务或初始代码OS_/MEM_ENOSMemCreate()函数建立并初始化一块内存区。一块内存区包含指定数目标大小确定内存块。程序能够包含这些内存块并在用完后释放回内存区。参数addr 建立内存区起始地址。内存区能够使用静态数组或在初始化时使用malloc()函数建立。Nblks 需要内存块数目。每一个内存区最少需要定义两个内存块。Blksize 每个内存块
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 参考手册 模板
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【精****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【精****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。