uCOSII程序设计示例.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
接下来,介绍I2C中间件包括哪些API: 功能 函数名称 说 明 参数设置 i2cInit i2cSetMode 用户可调用该函数,指定哪一个I2C设备要初始化,并指定该I2C设备的速率。 指定I2C设备、初始化其速率;和i2cInit函数不同的是它不影响其它参数 读写操作 i2cRead i2cGetFlag i2cGetRemainBytes i2cWrite 调用该函数,读取指定地址内指定长度的数据到指定缓存 调用该函数,读取指定I2C设备的工作状态 调用该函数,将指定缓存内指定长度的数据写入指定地址 中断服务 i2c0IRQ i2c1IRQ i2c2IRQ I2C0中断服务函数 I2C1中断服务函数 I2C2中断服务函数 由上表可见,I2C中间件共包含三大功能模块、9个API。 使用I2C中间件也有一定的流程: I2C中间件只针对I2C部件进行了操作,其它与系统相关的地方如管脚连接和中断向量都需要单独设置。中间件的一般使用流程,如下图所示: 开始 选择应用环境,设置I2C管脚 配置中断 用中间件API编程 用户程序 结束 使用I2C中间件前,须设置管脚;此外还要选择应用环境,一般默认为在μC/OS-II下; 由于I2C中间件是使用中断来进行收发,所以用户需要初始化I2C中断,这部分的工作并没有包括到中间件里; 在作好相关的初始化工作后,用户即可直接使用中间件里的API “组装”应用程序了。 I2C中间件| μC/OS-II程序设计 简介 小结: 开始 文件组成 API简介 中间件应用流程 结束 介绍了I2C中间件的用途和应用范围; 介绍了I2C中间件的文件组成及各自的作用; 概述了I2C中间件内API的全貌; 中间件概述 为了让读者形成应用I2C中间件的整体印象而介绍了中间件的一般应用流程。 用下面的演示对本小节所叙述的内容作一回顾: 小节的叙述轨迹 I2C中间件| μC/OS-II程序设计 简介 I2C中间件| μC/OS-II程序设计 目录 3 使用示例 4 小结 2 使用导论 简介 1 用户在使用中间件进行编程之前,有必要理解一些重要细节。本小节将对以下几个方面展开叙述: 参数设置 钩子函数 阻塞-释放 在本中间件里,使用字符串来给API提供入口参数。 在此处介绍钩子函数、也即回调函数的概念。 由于对I2C设备进行读写时要求独占,所以存在阻塞-释放机制。 I2C中间件| μC/OS-II程序设计 使用导论 参数设置 中间件里的部分API,是采用字符串来输入入口参数的,字符串的格式如下所述: 关键字0=值0[空格]关键字1=值1[空格]关键字2=值2[空格]…… 具体的例子如下所示: /* 设置I2C0器件为主机,速率为200K */ Char I2cSet[] = {“Speed=200000”}; I2cInit (0, I2cSet, NULL); I2C中间件| μC/OS-II程序设计 使用导论 钩子函数 钩子函数,顾名思义,它“倚靠”在某一个函数内(墙壁),但又可“挂上”其它代码(钩子可挂各种物件)。请看下面的图示: void i2c0IRQ ( void ) { …… } i2c0Hook(); void i2c0Hook ( void ) { /* 自定义代码 */ } …… “墙壁” “钩子” “所挂物件” I2C中间件| μC/OS-II程序设计 使用导论 钩子函数 实际情况里,钩子函数所“挂”的自定义代码如何运行呢?请看演示: void i2c0IRQ ( void ) { …… } i2c0Hook(); void i2c0Hook ( void ) { /* 自定义代码 */ } …… I2C中间件| μC/OS-II程序设计 使用导论 阻塞-释放 1、阻塞 对于同一个I2C接口,有任务A正对其进行读写操作;而在同时,另一个任务B也要对其进行读写操作。那么,只有待任务A操作完毕,该I2C接口空闲,任务B方可操作I2C接口。于是,需要暂时阻塞任务B的运行。什么时候会发生阻塞呢? 任务调用中间件里的带阻塞功能API,这些API会判断操作的I2C接口是否空闲,若该I2C接口未处于空闲状态,则立即将调用自己的任务挂起,从而暂时地“阻塞”了任务的继续运行: 函数名称 说 明 i2cRead/i2cWrite 由于要对I2C接口进行独占操作,它们必须具备阻塞任务运行的功能 i2cGetFlag 该函数在操作的I2

文档评论(0)

blingjingya + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档