usb库文件usb_desc.c分析

本文详细介绍了USB设备描述符的结构及其字段含义。通过具体的代码示例,展示了如何定义一个符合USB规范的设备描述符,并解释了小端结构在USB传输中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考《圈圈教你玩USB》

usb协议中使用的是小端结构,所以实际数据在传输时是低字节在先的。

设备描述符的实现:

  已知每个设备都必须有且仅有一个设备描述符,它的结构在USB协议中有详细的定义。

              偏移量                            域                 大小/字节                         说 明                       
0bLength1该描述符的长度(18字节)
1bDescription1描述符类型(设备描述符为0x01)
2bcdUSB2本设备所使用的usb协议版本
4bDeviceClass1类代码
5bDeviceSubClass1子类代码
6bDeviceProtocol1设备所使用的协议
7bMaxPackSize01端点0最大包长
8idVender2厂商id
10idProduct2产品ID
12bcdDevice2设备版本号
14iManufacturer1描述厂商的字符串的索引
15iProduct1描述产品的字符串的索引
16iSerialNumber1产品序列号字符串的索引
17bNumcofigurations1可能的配置数

 

 1 const uint8_t MASS_DeviceDescriptor[MASS_SIZ_DEVICE_DESC] =
 2   {
 3     0x12,   /* bLength  */
 4     0x01,   /* bDescriptorType */
 5     0x00,   /* bcdUSB, version 2.00 */
 6     0x02,
 7     0x00,   /* bDeviceClass : each interface define the device class */
 8     0x00,   /* bDeviceSubClass */
 9     0x00,   /* bDeviceProtocol */
10     0x40,   /* bMaxPacketSize0 0x40 = 64 */
11     0x83,   /* idVendor     (0483) */
12     0x04,
13     0x20,   /* idProduct */
14     0x57,
15     0x00,   /* bcdDevice 2.00*/
16     0x02,
17     1,              /* index of string Manufacturer  */
18     /**/
19     2,              /* index of string descriptor of product*/
20     /* */
21     3,              /* */
22     /* */
23     /* */
24     0x01    /*bNumConfigurations */
25   };

 

*** Error: CreateProcess failed, Command: '"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --via "usb_cdcmy3\stm32f4xx_hal_pcd.__i"' compiling stm32f4xx_hal_rcc.c... *** Error: CreateProcess failed, Command: '"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --via "usb_cdcmy3\stm32f4xx_hal_rcc.__i"' compiling stm32f4xx_ll_usb.c... *** Error: CreateProcess failed, Command: '"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --via "usb_cdcmy3\stm32f4xx_ll_usb.__i"' compiling usbd_desc.c... *** Error: CreateProcess failed, Command: '"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --via "usb_cdcmy3\usbd_desc.__i"' compiling usbd_conf.c... *** Error: CreateProcess failed, Command: '"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --via "usb_cdcmy3\usbd_conf.__i"' compiling gpio.c... *** Error: CreateProcess failed, Command: '"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --via "usb_cdcmy3\gpio.__i"' compiling stm32f4xx_hal_flash_ex.c... *** Error: CreateProcess failed, Command: '"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --via "usb_cdcmy3\stm32f4xx_hal_flash_ex.__i"' compiling usb_device.c... *** Error: CreateProcess failed, Command: '"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --via "usb_cdcmy3\usb_device.__i"' compiling stm32f4xx_hal_pcd_ex.c... *** Error: CreateProcess failed, Command: '"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --via "usb_cdcmy3\stm32f4xx_hal_pcd_ex.__i"' compiling stm32f4xx_hal_msp.c... *** Error: CreateProcess failed, Command: '"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --via "usb_cdcmy3\stm32f4xx_hal_msp.__i"' compiling usbd_cdc_if.c... *** Error: CreateProcess failed, Command: '"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --via "usb_cdcmy3\usbd_cdc_if.__i"' compiling stm32f4xx_it.c... *** Error: CreateProcess failed, Command: '"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --via "usb_cdcmy3\stm32f4xx_it.__i"' compiling main.c... Error: C4365E: Subtool invocation error: Error executing C:\Keil_v5\ARM\ARMCC\Bin\armasm.exe. ????£ compiling stm32f4xx_hal_gpio.c... "USB_CDCmy3\USB_CDCmy3.axf" - 1 Error(s), 0 Warning(s). Target not created. Build Time Elapsed: 00:00:44这个keil是遇到了什么问题呢
最新发布
07-25
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值