




已阅读5页,还剩9页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
USB鼠标的实现 实验第六讲 前言 在前面的实验中 我们已经完成了一个USB鼠标的枚举过程 但是我们自制的这个设备目前还无法真正实现一个鼠标的功能在这次实验中 我们完成要实现这个鼠标的最后一些步骤 鼠标的实现原理 按键驱动部分 在这个USB鼠标中 我们用开发板上面的8个按键模拟鼠标的各个功能 实现鼠标的移动和按键的单击与双击按键的驱动属于单片机的内容 代码随课件一起提供给大家 文件名为KEY C和KEY H按键驱动通过几个全局变量将按键事件提供给其它函数使用 鼠标的实现 报告部分 上次实验中 我们知道 HID设备是通过报告来和主机交互数据例如当我们的鼠标发生了一个事件 比如左键单击 那么就需要向主机发送一个报告按照上次课程中写的报告描述符的规范 这个报告是4个字节第一字节的低3位用来表示按键是否按下第二字节表示X轴的改变量第三字节表示Y轴的改变量第四字节表示滚轮的改变量 当设备需要向主机传送数据时 我们需要准备好一个报告并且将它发送出去报告不是随时都能返回的 只有在设置非0配置之后 才能将数据写到端点1中返回 如何知道已经进行设备配置了呢 可以增加一个变量ConfigValue 初始化为0 在收到设置配置请求后 将配置值赋给它 如果是非0的配置 就可以返回报告了发送报告到端点1之前 需要检查端点1是否处于忙状态 即里面是否有数据未发送出去 为此增加一个Ep1InIsBusy的标志 来决定端点1输入缓冲是否空闲 设备复位后 Ep1InIsBusy置为0 根据Ep1InIsBusy的要求将端点1输入中断处理函数完善 voidUsbEp1In void ifdefDEBUG0Prints USB端点1输入中断 r n endif 读最后发送状态 这将清除端点1输入的中断标志位D12ReadEndpointLastStatus 3 端点1输入处于空闲状态Ep1InIsBusy 0 在复位中断处理中添加对标志的重置语句 voidUsbBusReset void ifdefDEBUG0Prints USB总线复位 r n endifEp1InIsBusy 0 复位后端点1输入缓冲区空闲 在main c里面 主循环体中 判断有中断发生后 增加一个判断是否返回报告 if ConfigValue 0 如果已经设置为非0的配置 则可以返回报告数据 if Ep1InIsBusy 如果端点1输入没有处于忙状态 则可以发送数据 KeyCanChange 0 禁止按键扫描if KeyUp KeyDown KeyPress 如果有按键事件发生 SendReport 则返回报告 KeyCanChange 1 允许按键扫描 下面我们编写一个SendReport 函数来实现发送报告这个功能 这个函数放在main c文件里面SendReport 函数根据当前的按键情况来返回报告 当前的按键情况由我们在KEY C中定义的几个全局变量确定 SendReport 函数代码 voidSendReport void 需要返回的4字节报告的缓冲 Buf 0 的D0就是左键 D1就是右键 D2就是中键 这里没有 Buf 1 为X轴 Buf 2 为Y轴 Buf 3 为滚轮uint8Buf 4 0 0 0 0 我们不需要KEY1 KEY6按键改变的信息 所以先将它们清0KeyUp 如果有按键按住 并且不是KEY7 KEY8 左 右键 或者KEY7 KEY8任何一个键有变动的话 则需要返回报告 if KeyPress 这里一次往下滚动一个单位 if KeyPress 主要代码完成了 下面完善一些细节 在USBCORE C代码前面增加变量说明语句 当前的配置值 只有在设置非0配置后uint8ConfigValue 端点1缓冲是否忙的标志 当缓冲区中有数据时 该标志为真 当缓冲区中空闲时 该标志为假 uint8Ep1InIsBusy 在USBCORE H中把上面定义的两个变量声明为全局变量externuint8ConfigValue 当前配置值externuint8Ep1InIsBusy 端点1输入是否忙 在MAIN C中添加包含头文件KEY H的语句在MAIN C中利用函数In
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 北京市昌平区2024-2025学年八年级下学期第二次月考物理试题含参考答案
- 采薇的语言鉴赏与历史背景探讨:语文教学教案
- 时间巧安排课件
- 一支好香烟500字(11篇)
- 让网络空间清朗起来400字(7篇)
- 时事政务知识培训课件
- 请跟我来学校250字(15篇)
- 早餐培训面点师课件模板
- 观后感白芳礼的观后感900字(7篇)
- 纪检15严禁课件
- 肺占位性病变护理查房
- 心源性休克的护理个案
- 广告创意与用户体验-第3篇-洞察阐释
- 2024年10月19日北京市下半年事业单位七区联考《公共基本能力测验》笔试试题(海淀-房山-西城-通州-丰台-怀柔)真题及答案
- 幼儿园一日常规安全培训
- 5G基带芯片算法验证平台:从设计到实现的关键技术与实践
- 《中国动态血压监测基层应用指南(2024年)》解读 2
- 2025初中语文新教材培训
- 企业技术人员管理制度
- DB13T 5545-2022 选矿厂安全生产基本条件
- 2025年高考生物辽宁卷真题解读及复习备考指导(黑龙江吉林内蒙古适用)
评论
0/150
提交评论