OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2770|回复: 1

STM32F407 USB 自定义 HID 只有上电能枚举成功

[复制链接]

2

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
53
金钱
53
注册时间
2017-3-1
在线时间
11 小时
发表于 2017-8-24 16:57:56 | 显示全部楼层 |阅读模式
5金钱
第一次接触USB ,目的是想能够跟PC双向通讯,然后根据原子哥例程修改成自定义HID设备,只有上电时才能枚举成功,再次拔插识别成unknown device,不知道是什么原因,求大神解惑这是devicedesc描述符

__ALIGN_BEGIN uint8_t USBD_DeviceDesc[USB_SIZ_DEVICE_DESC] __ALIGN_END =
  {
    0x12,                       /*bLength */
    USB_DEVICE_DESCRIPTOR_TYPE, /*bDescriptorType*/
    0x00,                       /*bcdUSB */
    0x02,
    0x00,                       /*bDeviceClass*/
    0x00,                       /*bDeviceSubClass*/
    0x00,                       /*bDeviceProtocol*/
    USB_OTG_MAX_EP0_SIZE,      /*bMaxPacketSize*/
    LOBYTE(USBD_VID),           /*idVendor*/
    HIBYTE(USBD_VID),           /*idVendor*/
    LOBYTE(USBD_PID),           /*idVendor*/
    HIBYTE(USBD_PID),           /*idVendor*/
    0x00,                       /*bcdDevice rel. 2.00*/
    0x02,
    USBD_IDX_MFC_STR,           /*Index of manufacturer  string*/
    USBD_IDX_PRODUCT_STR,       /*Index of product string*/
    USBD_IDX_SERIAL_STR,        /*Index of serial number string*/
    USBD_CFG_MAX_NUM            /*bNumConfigurations*/
  } ; /* USB_DeviceDescriptor */



下面是配置描述符
__ALIGN_BEGIN static uint8_t USBD_HID_Desc[USB_HID_DESC_SIZ] __ALIGN_END=
{
  /* 18 */
  0x09,         /*bLength: HID Descriptor size*/
  HID_DESCRIPTOR_TYPE, /*bDescriptorType: HID*/
  0x11,         /*bcdHID: HID Class Spec release number*/
  0x01,
  0x00,         /*bCountryCode: Hardware target country*/
  0x01,         /*bNumDescriptors: Number of HID class descriptors to follow*/
  0x22,         /*bDescriptorType*/
  HID_MOUSE_REPORT_DESC_SIZE,/*wItemLength: Total length of Report descriptor*/
  0x00,
};
#endif


#ifdef USB_OTG_HS_INTERNAL_DMA_ENABLED
  #if defined ( __ICCARM__ ) /*!< IAR Compiler */
    #pragma data_alignment=4   
  #endif
#endif /* USB_OTG_HS_INTERNAL_DMA_ENABLED */  
__ALIGN_BEGIN static uint8_t HID_MOUSE_ReportDesc[HID_MOUSE_REPORT_DESC_SIZE] __ALIGN_END =
{
                0x05,0x8c, /* USAGE_PAGE (ST Page) */
                0x09, 0x01, /* USAGE (Demo Kit) */
                0xa1, 0x01, /* COLLECTION (Application) */
                /* 6 */

                // The Input report


                0x09,0x03, // USAGE ID - Vendor defined
                0x15,0x00, // LOGICAL_MINIMUM (0)
                0x25,0xFF, // LOGICAL_MAXIMUM (255)

                0x75,0x08, // REPORT_SIZE (8)
                0x95,0x01, // REPORT_COUNT (20)   
                0x81,0x02, // INPUT (Data,Var,Abs)
                //18
                // The Output report


                0x09,0x04, // USAGE ID - Vendor defined
                0x15,0x00, // LOGICAL_MINIMUM (0)
                0x25,0xFF, // LOGICAL_MAXIMUM (255)
                0x75,0x08, // REPORT_SIZE (8)
                0x95,0x01, // REPORT_COUNT (20)        
                0x91,0x02, // OUTPUT (Data,Var,Abs)
                //30
                // The Feature report

                /* 31 */
                0xc0 /* END_COLLECTION */

}

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
53
金钱
53
注册时间
2017-3-1
在线时间
11 小时
 楼主| 发表于 2017-8-24 17:04:34 | 显示全部楼层
没有人吗,自己顶一下
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-14 21:12

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表