⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 my_usb.h

📁 我改了一部分别人的USB,原来的不方便看逻辑
💻 H
字号:
#include"mytype.h"
#include"d12_value.h"
code uint8 LANGUAGE_ID[4]={0x04,0x03,0x09,0x04};  

//设备序列号										
code uint8 device_serial_number[]=
{22,STRING_DESCRIPTOR,'2',0,'0',0,'0',0,'7',0,'-',0,'0',0,'3',0,'-',0,'2',0,'3',0};


//厂商字符串 电脑圈圈的USB专区 http://group.ednchina.com/93
//汉字Unicode编码,使用http://computer00.21ic.org/user1/2198/archives/2007/42769.html转换
code uint8 ManufacturerString[80]=
{80,STRING_DESCRIPTOR,0x35,0x75,0x11,0x81,0x08,0x57,0x08,0x57,0x84,0x76,'U',0x00,
 'S',0x00,'B',0x00,0x13,0x4E,0x3A,0x53,0x20,0x00,'H',0,'t',0,'t',0,
 'p',0,':',0,'/',0,'/',0,'g',0,'r',0,'o',0,'u',0,'p',0,'.',0,'e',0,'d',0,'n',0,
 'c',0,'h',0,'i',0,'n',0,'a',0,'.',0,'c',0,'o',0,'m',0,'/',0,'9',0,'3',0};

//产品字符串 电脑圈圈的USB专区活动之Computer00'sUSB http://group.ednchina.com/93
//汉字Unicode编码,使用http://computer00.21ic.org/user1/2198/archives/2007/42769.html转换
code uint8 ProducterString[96]=
{96,STRING_DESCRIPTOR,0x35,0x75,0x11,0x81,0x08,0x57,0x08,0x57,0x84,0x76,'U',0x00,
 'S',0x00,'B',0x00,0x13,0x4E,0x3A,0x53,0x3B,0x6D,0xA8,0x52,0x4B,0x4E,'U',0x00,
 'S',0x00,'B',0x00,
 0x20,0x9F,  /*鼠*/
 0x07,0x68,  /*标*/
 0x20,0x00,'H',0,'t',0,'t',0,
 'p',0,':',0,'/',0,'/',0,'g',0,'r',0,'o',0,'u',0,'p',0,'.',0,'e',0,'d',0,'n',0,
 'c',0,'h',0,'i',0,'n',0,'a',0,'.',0,'c',0,'o',0,'m',0,'/',0,'9',0,'3',0};

code DEVICE_DESCRIPTOR_STRUCT device_descriptor=     //设备描述符
{sizeof(DEVICE_DESCRIPTOR_STRUCT),                   //设备描述符的字节数大小
 DEVICE_DESCRIPTOR,	                                 //设备描述符类型编号
 SWAP16(0x0110),                                     //USB版本号,usb 1.1
 0x00,                                               //USB分配的设备类代码
 0x00,                                               //USB分配的子类代码
 0x00,                                               //USB分配的设备协议代码
 0x10,                                               //端点0的最大包大小
 SWAP16(0x8888),                                     //厂商编号VID,这里只是作为测试用,请使用自己的VID
 SWAP16(0x0002),                                     //产品编号PID,这里只是作为测试用,请使用自己的PID
 SWAP16(0x0100),                                     //设备出厂编号
 0x01,                                               //设备厂商字符串的索引
 0x02,                                               //描述产品字符串的索引
 0x03,                                               //描述设备序列号字符串的索引
 0x01                                                //可能的配置数量
};


code char MouseReportDescriptor[52] = {
    0x05, 0x01,                    // USAGE_PAGE (Generic Desktop)
    0x09, 0x02,                    // USAGE (Mouse)
    0xa1, 0x01,                    // COLLECTION (Application)
    0x09, 0x01,                    //   USAGE (Pointer)
    0xa1, 0x00,                    //   COLLECTION (Physical)
    0x05, 0x09,                    //     USAGE_PAGE (Button)
    0x19, 0x01,                    //     USAGE_MINIMUM (Button 1)
    0x29, 0x03,                    //     USAGE_MAXIMUM (Button 3)
    0x15, 0x00,                    //     LOGICAL_MINIMUM (0)
    0x25, 0x01,                    //     LOGICAL_MAXIMUM (1)
    0x95, 0x03,                    //     REPORT_COUNT (3)
    0x75, 0x01,                    //     REPORT_SIZE (1)
    0x81, 0x02,                    //     INPUT (Data,Var,Abs)
    0x95, 0x01,                    //     REPORT_COUNT (1)
    0x75, 0x05,                    //     REPORT_SIZE (5)
    0x81, 0x03,                    //     INPUT (Cnst,Var,Abs)
    0x05, 0x01,                    //     USAGE_PAGE (Generic Desktop)
    0x09, 0x30,                    //     USAGE (X)
    0x09, 0x31,                    //     USAGE (Y)
    0x09, 0x38,                    //     USAGE (Wheel)
    0x15, 0x81,                    //     LOGICAL_MINIMUM (-127)
    0x25, 0x7f,                    //     LOGICAL_MAXIMUM (127)
    0x75, 0x08,                    //     REPORT_SIZE (8)
    0x95, 0x03,                    //     REPORT_COUNT (3)
    0x81, 0x06,                    //     INPUT (Data,Var,Rel)
    0xc0,                          //   END_COLLECTION
    0xc0                           // END_COLLECTION
};

/*     定义配置,接口,端点等描述符结构体,因为它们是随配置描述符一起返回的
typedef struct _CON_INT_ENDP_DESCRIPTOR_STRUCT
{
 CONFIGURATION_DESCRIPTOR_STRUCT configuration_descriptor;
 INTERFACE_DESCRIPTOR_STRUCT  interface_descriptor;
 ENDPOINT_DESCRIPTOR_STRUCT  endpoint1in_descriptor;
 ENDPOINT_DESCRIPTOR_STRUCT  endpoint1out_descriptor;
 ENDPOINT_DESCRIPTOR_STRUCT  endpoint2in_descriptor;
 ENDPOINT_DESCRIPTOR_STRUCT  endpoint2out_descriptor;
}CON_INT_ENDP_DESCRIPTOR_STRUCT;
*/
//定义配置,接口,端点等描述符结构体,因为它们是随配置描述符一起返回的
typedef struct _CON_INT_ENDP_DESCRIPTOR_STRUCT
{
 CONFIGURATION_DESCRIPTOR_STRUCT configuration_descriptor;
 INTERFACE_DESCRIPTOR_STRUCT  interface_descriptor;
 HID_DESCRIPTOR_STRUCT hid_descriptor;
 ENDPOINT_DESCRIPTOR_STRUCT  endpoint_descriptor[ENDPOINT_NUMBER];
}CON_INT_ENDP_DESCRIPTOR_STRUCT;

code CON_INT_ENDP_DESCRIPTOR_STRUCT con_int_endp_descriptor=
{//configuration_descriptor                                          //配置描述符
{
 sizeof(CONFIGURATION_DESCRIPTOR_STRUCT),                           //配置描述符的字节数大小
 CONFIGURATION_DESCRIPTOR,                                          //配置描述符类型编号
 SWAP16(sizeof(CON_INT_ENDP_DESCRIPTOR_STRUCT)),
 0x01,                                                            //只包含一个接口
 0x01,                                                            //该配置的编号
 0x00,                                                            //iConfiguration字段
 0xA0,                                                            //采用总线供电,支持远程唤醒
 0xC8                                                            //从总线获取最大电流400mA
},
//interface_descritor                                             //接口描述符
{
 sizeof(INTERFACE_DESCRIPTOR_STRUCT),                             //接口描述符的字节数大小
 INTERFACE_DESCRIPTOR,                                            //接口描述符类型编号
 0x00,                                                            //接口编号为0
 0x00,                                                            //该接口描述符的编号
 ENDPOINT_NUMBER,                                                 //非0端点数量为2,只使用端点主端点输入和输出
 0x03,                                                            //人机接口设备(HID)类
 0x01,                                                            //使用的子类:支持BIOS根启动Boot的子类
 0x02,                                                            //使用的协议:鼠标
 0x00                                                             //接口描述符字符串索引
},
//hid_descriptor
{
 sizeof(HID_DESCRIPTOR_STRUCT),                                   //HID描述符的字节数大小
 HID_DESCRIPTOR,                                                  //HID描述符类型编号
 SWAP16(0x0110),                                                  //HID类协议版本号,为1.1
 0x21,                                                            //固件的国家地区代号,0x21为美国
 NUM_SUB_DESCRIPTORS,                                             //下级描述符的数量
 {
  {
   REPORT_DESCRIPTOR,                                             //下级描述符为报告描述符
   SWAP16(sizeof(MouseReportDescriptor))                          //下级描述符的长度
  }
 },
},
//endpoint_descriptor[]
{
 {                                                                //主端点输入描述
  sizeof(ENDPOINT_DESCRIPTOR_STRUCT),                             //端点描述符的字节数大小
  ENDPOINT_DESCRIPTOR,                                            //端点描述符类型编号
  MAIN_POINT_IN,                                                  //端点号,主输入端点
  ENDPOINT_TYPE_INTERRUPT,                                        //使用的传输类型:中断传输
  SWAP16(0x0040),                                                 //该端点支持的最大包尺寸,64字节
  0x0A                                                            //中断扫描时间:设置为10ms
 },
  
 {                                                                //主端点输出描述
  sizeof(ENDPOINT_DESCRIPTOR_STRUCT),                             //端点描述符的字节数大小
  ENDPOINT_DESCRIPTOR,                                            //端点描述符类型编号
  MAIN_POINT_OUT,                                                 //端点号,主输出端点
  ENDPOINT_TYPE_INTERRUPT,                                        //使用的传输类型:中断传输
  SWAP16(0x0040),                                                         //该端点支持的最大包尺寸,64字节
  0x0A                                                            //中断扫描时间:设置为10ms
 }
}
};

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -