USB鼠标的实现(实验第六讲).ppt

上传人:xiao****1972 文档编号:6281011 上传时间:2020-02-21 格式:PPT 页数:14 大小:286.81KB
返回 下载 相关 举报
USB鼠标的实现(实验第六讲).ppt_第1页
第1页 / 共14页
USB鼠标的实现(实验第六讲).ppt_第2页
第2页 / 共14页
USB鼠标的实现(实验第六讲).ppt_第3页
第3页 / 共14页
点击查看更多>>
资源描述
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中利用函数InitKeyboard 初始化按键在端点0输出中断处理函数中 处理设置配置的分支跳转语句段内 添加对ConfigValue的赋值语句 保存当前配置值ConfigValue wValue
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!