• 空间

STM32 USB复合设备调试过程,

复合设备一般要用到IAD(接口关联描述符),但是我在网上下载的几个例程都没有用到IAD,最后发现如

果USB复合设备只用到两个接口,即复合的两个功能(MSC & HID)各占用一个接口,这种情况是不需要用
IAD的。

我是这样做的:直接在ST提供的MSC例程上修改,在MSC的配置描述符后面添加一个interface(HID接口),

接口描述符不熟悉,直接在网上拷贝一个成功的例程,这一步的问题不大,HID设备还需要一个报告描述符

,这个比较复杂,但是为了简化应用,也直接拷贝一个成熟的报告描述符,这里面可以设置的东西很多,

但是我们用的简单,针对数据输入与数据输出各建立一个报告。报告长度都设置为64字节。还以为ST没有

提供复合设备的例程,其实ST公司在老版本的USB LIB 4.0版本里是有提供MSC+HID复合设备的,我知道这

个信息的时候,已经在ST的 USB OTG新版本库中移植成功了MSC&HID复合设备,composite device

其它我应该会提前半天调试成功的,有一个VID耽误了我好长时间,VID PID是USB厂家在USB ORG组织注册

的唯一ID号,VID是厂家ID号,PID是产品ID号,USB主机系统通过PID还确认此设备是什么类型的USB设备,

我移植的MSC例程是0x5710,我做复合设备的时候也没清楚还有这么一说,就没有改这个PID,所以我的HID

设备一直没有识别出来,尽管我在配置描述符中也增加了HID的接口,一个偶然的机会我发现我的VID,PID

与我移植的例程不一样,我改成例程的0X0606 0X5606之后马上就识别成功了,这时我才意识到VID PID的

重要性,马上上网查VID PID的作用,原来如此!! 原来WINDOWS操作系统也懒省事,如果发现VID PID已

经有注册了,直接按注册的产品类型来加载驱动,如果没有注册才去按“配置描述符”加载驱动,我把VID

PID都修改为0 0,果然WINDOWS也能识别出我的复合设备composite device

USB复合设备调试 STM32相关推荐

  1. [STM32F1]基于STM32 HAL库实现鼠标键盘摇杆的USB复合设备

    序: 其实这样一个设备我们在ch32v103上实现过,但移植到STM32 HAL库上面,还是发现很多问题的,现在就移植过程给大家分享一下在基于STM32 HAL库实现鼠标键盘摇杆的USB复合设备的实现 ...

  2. STM32 USB复合设备,USB键盘+自定义HID设备

    上面是我的微信和QQ群,欢迎新朋友的加入. 最近研究USB复合设备 主要是把键盘和电脑音量控制两个东西给合并成一个设备 首先要知道的一点的是,不论是键盘.鼠标.或者这个标准的HID用户控制设备,本质都 ...

  3. STM32 USB复合设备(VCP虚拟串口+HID键盘)详解

    USB复合设备 介绍 USB复合设备与组合设备区别 USB描述符修改 修改CustomHID_Reset 修改CustomHID_Data_Setup 介绍 本次使用的是Keil 5+STM32F10 ...

  4. STM32F207 USB复合设备

    STM32F207 USB复合设备 最近一个项目需要用F207的USB做一个复合设备,目标是将MSC和VCP设备复合,MSC设备使用的是spiflash. 由于以前对usb的开发仅限于单一设备,所以这 ...

  5. 基于 Ubuntu 18.04 Jlink + Vim + Cmake + Makefile 调试 STM32

    Ubuntu 18.04 Jlink + Vim + Cmake + Makefile 调试 STM32 作者:解琛 时间:2020 年 8 月 3 日 Ubuntu 18.04 Jlink + Vi ...

  6. linux usb组合设备,USB复合设备的实现

    USB复合设备一般用Interface Association Descriptor(IAD)实现,就是在要合并的接口前加上IAD描述符. IAD描述符: typedef struct _USBInt ...

  7. 安卓设备通过USB串口与STM32单片机通讯之二

    安卓设备通过USB串口与STM32单片机通讯之二 本博文系JGB联合商务组的原创作品,引用请标明出处. 本博文接续上一篇的末尾章节. (二) APP的JAVA代码部分(使用Android Studio ...

  8. (转)jLink使用ITM机制实现调试stm32单片机

    ----------------------------------------------------------------------------------------------- 作者:p ...

  9. semihost/ITM机制浅析以及使用JLINK通过ITM调试stm32单片机

    使用ITM机制实现调试stm32单片机,实现printf与scanf. ITM简介 ITM机制是一种调试机制,是新一代调试方式,在这之前,有一种比较出名的调试方式,称为半主机(semihosting) ...

最新文章

  1. 华为充电器接口叫什么_插座USB接口跟手机充电器有什么不同_电工百科
  2. Daily Scrum 9.28
  3. android contacts电话查询头像,android透过查询电话号码获取联系人头像
  4. 使用JDK自带的工具jstack找出造成运行程序死锁的原因
  5. 机器学习偏差方差_机器学习101 —偏差方差难题
  6. JavaScript实现四则运算
  7. Java 邮箱判断 正则表达式
  8. 使用JAVA如何对图片进行格式检查以及安全检查处理
  9. 雷军:明年2千元以上支持5G的手机,至少发布10款
  10. 拓端tecdat:Python金融时间序列模型ARIMA 和GARCH 在股票市场预测应用
  11. MVC学习笔记三:WebGrid控件的简单使用
  12. 质量与效率并重,测试左移助力块存储技术研发
  13. 如何在pe里加载阵列卡驱动_PE添加RAID驱动的方法
  14. Windows 10的“稳定”于2019年4月更新将在某些游戏中导致BSOD
  15. 记录编译Hi3559A时遇到的一些错误和解决方法
  16. Linux 基础之基础网络ss命令
  17. 【支付架构】支付营销 - 微信会员有礼
  18. 什么是美国能源之星计划?
  19. test1asfd 按时收费的水电费阿萨德阿斯蒂芬啊
  20. 线下交易如何避免微信和支付宝交易风控

热门文章

  1. 腾讯云部署Flask应用
  2. Java基于Redis实现“附近的人”(含源码下载)
  3. 爱在深秋-稻城亚丁旅游途中的风花雪月
  4. git rebase和git merge使用方法详解
  5. 遗传算法之扇贝的进化(python代码实现)
  6. 关于百度地图设置显示的比例尺大小
  7. android 小白点代码,Android实现小圆点显示未读功能
  8. 小白踩坑记-Redis的安装与使用
  9. 热修复(一)原理与实现详解
  10. NetBackup 8.2 LinuxR 服务器安装及使用 ssh 方法将客户端软件从 UNIX 主服务器安装到 UNIX 客户端(持续更新)