- 1、本文档共19页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
uCOS-II信号量集,ucosii信号量,ucosii互斥信号量,信号量集ucos,ucos信号量,ucos互斥信号量,ucos中断发送信号量,ucos信号量消抖,ucosiii信号量,ucos信号量can
添加一个任务到事件标志组等待任务链表中OS_FlagBlock() 信号量集的操作 创建一个事件标志组OSFlagCreate() 接收(等待)事件标志组的事件标志位OSFlagPend() 无等待请求信号量集 信号量级的其他操作函数 * * 信号量集 在嵌入式实时内核中,信号量是指一种表明预先定义的系统事件已经发生的机制。信号量机制用于任务与任务之间、任务与ISR之间的同步。其主要的特点是可实现一对多的同步。 一个信号量就是一个标志,不具备其它信息。 一个或多个信号量构成一个信号量集。信号量集可以用一个指定长度的变量(比如一个32位的无符号整型变量,不同的操作系统其具体实现不一样)来表示,而每个信号量由在信号量集变量中的某一位来代表。 信号量及信号量集有以下特点: 1、信号量间相互独立 2、信号量仅用于同步,不提供数据传输功能 3、信号量无队列,即多次发送同一信号量,在未经过任何处理的情况下,其效果等同于只发送一次。 提供信号量集机制的意义在于: 1、当某任务要与多个任务或中断服务同步时,就需要使用信号量集机制。 2、若任务需要与一组事件中的任意一个发生同步,可称为独立型同步(逻辑“或”关系)。 3、任务也可以等待若干事件都发生时才同步,称为关联型同步(逻辑“与”关系)。 信号量集的标志组 不同于信号量、消息邮箱、消息队列等事件,μC/OS-II不使用事件控制块来描述信号量集,而使用了一个叫做标志组的结构OS_FLAG_GRP。 OS_FLAG_GRP结构如下: ? typedef struct{ INT8U OSFlagType; //识别是否为信号量集的标志 void *OSFlagWaitList;//指向等待任务链表的指针 OS_FLAGS OSFlagFlags; //所有信号列表 }OS_FLAG_GRP; 成员OSFlagWaitList是一个指针,当一个信号量集被创建后,这个指针指向了这个信号量集的等待任务链表。 等待任务链表 与其他前面介绍过的事件不同,信号量集用一个双向链表来组织等待任务,每一个等待任务都是该链表中的一个节点(Node)。标志组OS_FLAG_GRP的成员OSFlagWaitList就指向了信号量集的这个等待任务链表。 等待任务链表节点OS_FLAG_NODE的结构如下: ? typedef struct { void *OSFlagNodeNext; //指向下一个节点的指针 void *OSFlagNodePrev; //指向前一个节点的指针 void *OSFlagNodeTCB; //指向对应任务控制块的指针 void *OSFlagNodeFlagGrp; //反向指向信号量集的指针 OS_FLAGS OSFlagNodeFlags; //信号过滤器 INT8U OSFlagNodeWaitType;//定义逻辑运算关系的数据 } OS_FLAG_NODE; 事件标志组、事件标志节点及任务控制块之间的关系 给等待任务链表添加节点的函数为OS_FlagBlock( ),这个函数的原型为: ? static void OS_FlagBlock ( OS_FLAG_GRP *pgrp, //信号量集指针 OS_FLAG_NODE *pnode, //待添加的等待任务节点指针 OS_FLAGS flags, //指定等待信号的数据 INT8U wait_type, //信号与等待任务之间的逻辑 INT16U timeout //等待时限 ); ? 这个函数将在请求信号量集函数OSFlagPend ( )中被调用。 ? 从等待任务链表中删除一个节点的函数为OS_FlagUnlink( ),这个函数的原型为: ? void OS_FlagUnlink (OS_FLAG_NODE *pnode); ? 这个函数将在发送信号量集函数OSFlagPost( )中被调用。 信号量集的操作 任务可以通过调用函数OSFlagCreate ( )来创建一个信号量集。OSFlagCreate ( )的函数原型为: ? OS_FLAG_GRP *OSFlagCreate ( OS_FLAGS flags, //信号的初始值 INT8U *err //错误信息 ); OS_FLAG_GRP *OSFlagCreate(OS_FLAGS flags, INT8U *err) { OS_FLAG_GRP *pgrp; pgrp=OSFlagFreeList;//获取一个空闲事件标志组结构 if(pgrp!=(OS_FLAG_GRP *
您可能关注的文档
- Server2012服务器虚拟化.pdf
- ServiceDesk_intro cn.ppt
- SIMC软件规范.doc
- Simulink常用模块中文名称(带模块图片).pdf
- SJYF-PT0503-C1 NetNumen N31网管系统操作指南.ppt
- Solarwinds & NotePager Pro SMS短信告警基本设置.pdf
- SOLP网管简易操作PPT.ppt
- soundIP嵌入式网络广播系统介绍及功能优势.ppt
- SPSS 简介 数据录入.pdf
- SPSS数据录入与编辑.doc
- 2024高考物理一轮复习规范演练7共点力的平衡含解析新人教版.doc
- 高中语文第5课苏轼词两首学案3新人教版必修4.doc
- 2024_2025学年高中英语课时分层作业9Unit3LifeinthefutureSectionⅢⅣ含解析新人教版必修5.doc
- 2024_2025学年新教材高中英语模块素养检测含解析译林版必修第一册.doc
- 2024_2025学年新教材高中英语单元综合检测5含解析外研版选择性必修第一册.doc
- 2024高考政治一轮复习第1单元生活与消费第三课多彩的消费练习含解析新人教版必修1.doc
- 2024_2025学年新教材高中英语WELCOMEUNITSectionⅡReadingandThi.doc
- 2024_2025学年高中历史专题九当今世界政治格局的多极化趋势测评含解析人民版必修1.docx
- 2024高考生物一轮复习第9单元生物与环境第29讲生态系统的结构和功能教案.docx
- 2024_2025学年新教材高中英语UNIT5LANGUAGESAROUNDTHEWORLDSect.doc
文档评论(0)