WINUSB使用(附STM32Demo)
Posted guanglun
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WINUSB使用(附STM32Demo)相关的知识,希望对你有一定的参考价值。
参考链接:
https://github.com/pbatard/libwdi/wiki/WCID-Devices
https://www.amobbs.com/thread-5530162-1-1.html
https://github.com/MichaelTien8901/STM32WINUSB
总结一下,主要需要做三个工作:
1.添加存储在字符串索引0xEE处的【OS字符串描述符】,其中包含bMS_VendorCode值,接下来的请求将使用该值。
2.在收到Vendor Request的 bRequest 等于bMS_VendorCode值的请求以后,若设置包的 wIndex == 0x0004,返回【WINUSB_ExtendedCompatId_Descritpor】。
3.在收到 Interface Request 的 bmRequestType 等于0xC1值的请求以后,若设置包的 wIndex == 0x0005,则返回【WINUSB_ExtendedProperty_InterfaceGUID_Descritpor】。
在调试1的过程中,win只会在第一次插入时请求0xEE,所以
0x00 关于如何对WINUSB进行DEBUG 请注意,Windows仅查询OS字符串描述符一次,在开发过程中会造成麻烦。OS描述符存储在注册表中 HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlUsbFlagsVVVVPPPPRRRR (VVVV - VID; PPPP - PID; RRRR - 版本号) 请删除你USB设备对应的注册表项,然后使用USBDeview卸载设备,以便始终获得新的设备插入行为。
第一次插入:
第二次及以后插入:
可见只会在第一次查询OS字符串描述符。
STM32F103C8T6 Demo:https://gitee.com/guanglunking/WINUSBF103Demo
如何从cubemx生成的USB CDC工程改为WINUSB工程可以看该次提交的diff:https://gitee.com/guanglunking/WINUSBF103Demo/commit/748cb59de2f920a92b7f5469e471eaa30cf356c6
以上是关于WINUSB使用(附STM32Demo)的主要内容,如果未能解决你的问题,请参考以下文章
基于STM32开发的BMP180气压传感器(附STM32程序!!!)
QMC5883L磁力计介绍(硬件+软件)(附STM32程序!!!)