图1 支持的鼠标 图2 不支持的鼠标 在 STM32Cube_FW_F4_V1.5.0\Projects\STM32F429I-Discovery\Applications\USB_Host\HID_Mouse 基础上进行修改(STM32F429I-Discovery开发板也测试过,同样问题) 目前仅发现支持 HP的一款鼠标(HP PC设备配套的) 其他的有线,无线的(大概测试了4种)都不支持 区别在于,支持的鼠标 在如下函数中:static USBH_StatusTypeDef USBH_HID_ClassRequest(USBH_HandleTypeDef *phost) case HID_REQ_SET_IDLE: classReqStatus = USBH_HID_SetIdle (phost, 0, 0); //YFSoft 2015-04-06 LCD_UsrLog("si%d ",classReqStatus); /* set Idle */ if (classReqStatus == USBH_OK) { HID_Handle->ctl_state = HID_REQ_SET_PROTOCOL; } else if(classReqStatus == USBH_NOT_SUPPORTED) { HID_Handle->ctl_state = HID_REQ_SET_PROTOCOL; } break; case HID_REQ_SET_PROTOCOL: /* set protocol */ classReqStatus = USBH_HID_SetProtocol(phost, 0); LCD_UsrLog("sp%d ",classReqStatus); if (classReqStatus == USBH_OK) { HID_Handle->ctl_state = HID_REQ_IDLE; /* all requests performed*/ phost->pUser(phost, HOST_USER_CLASS_ACTIVE); status = USBH_OK; } else if(classReqStatus == USBH_NOT_SUPPORTED) { HID_Handle->ctl_state = HID_REQ_IDLE; // all requests performed phost->pUser(phost, HOST_USER_CLASS_ACTIVE); status = USBH_OK; } break; 调试信息是我添加的,从图1可以看出 USBH_HID_SetIdle 函数开始状态为忙,几次后就OK了,USBH_HID_SetProtocol也是类似 但是不支持的鼠标,如图2,USBH_HID_SetIdle开始为忙,后续为不支持,USBH_HID_SetProtocol 直接为不支持。 有遇到类似问题的网友没有? |
stm32 USB的CDC类传输掉数据
STM32F105 USB接收数据不断进入中断,出现“死机”现象
关于STM32CubeMX配置的USB例程电脑无法识别问题
STM32F407 USB-HS-OTG是否不外接PHY可以做虚拟串口?
如何做一个USB从机键盘用stm32f407
用STM32F4 Cube MX生成的USB Device C代码的BUG
USB Device + FatFS + SDIO 模拟U盘意外只读问题
USB Device + FatFS + SDIO 问题
STM32H7配置成USB DEVICE时,连接电脑时不进入中断
STM32F446 USB和串口1 冲突
我测过几个鼠标,出问题的都是无线鼠标,你的也是这样的吗?
文档:Device Class Definition for Human Interface Devices (HID) Version 1.11
Appendix G: HID Request Support Requirements
对于Non-Boot Mouse,Set Idle Set Protocol 命令都是可选的。
我试的两个无线鼠标接收器,都是两个interface,第一个是键盘,第2个是鼠标及几个功能不明的设备。
两个无线鼠标中键盘的interface支持Set Idle Set Protocol,
两个无线鼠标中一个鼠标的Interface不支持Set Idle Set Protocol,另一个支持。但接收的数据包并不是boot protocol的。
如果鼠标不支持boot protocol,只能解析report的格式了,我现在也正烦着呢,因为设备要配无线鼠标。
这是.Net Gadgeteer板,可以用C#开发,拖拉自动生成代码
https://item.taobao.com/item.htm?spm=a1z10.1-c.w4004-9749525726.3.DyHkGT&id=43070516804
https://item.taobao.com/item.htm?spm=a1z10.1-c.w4004-9749525726.9.DyHkGT&id=43019039149
底层运行.Net Micro Framework系统,采用的是STM32F405 和 STM32F429的芯片
洞洞板,是亚克力的板子,自己定制的。
请问无线鼠标的问题解决了吗?我也是有两个Protocol,现在数据进入不了buff里,读不了数据好烦人啊,有线鼠标倒是搞定了
楼主有什么好方法校准
只要四个角落的值吗