相关STM32 USB的内容,可以查看一下我之前写的USB系列的文章。本文只讲述一些,本人在USB项目中遇到的一些问题以及解决方案
在MSC与HID的复合设备执行初始化的时候,会执行对应 USBD_HID_Init 与 USBD_MSC_Init 的初始化函数。这些个初始化函数的作用主要是为HID 与 MSC 分配对应类型的操作句柄(如:USBD_HID_HandleTypeDef 与 USBD_MSC_BOT_HandleTypeDef )并将对应的操作句柄添加到USB设备的操作句柄中( USBD_HandleTypeDef ) 的 pClassData 。但是由于HID 与 MSC的初始化由分先后,所以最终USB设备中的 pClassData 指向的是最后一个USB设备类型的操作句柄(MSC 或者 HID 的操作句柄),这样的原因导致在使用USBD_HID_SendReport的时候,并不能获取到真正HID操作句柄,因此没办反判断正确的 hhid->state ,所以导致无法发送报文。
解决方法: