网站导航:首页 > 论坛 > Easy Usb 51 Programer > 帖子浏览
   您正在浏览第 671 号帖子 收藏该帖

楼主 作者:kxgp  发表时间:2010-6-30 15:27:05

EUP帮助文件好像有错

收到Easy USB 51 Programer 后,按照光盘帮助一步一步学习, 在如何如何成为一个HID设备(模拟鼠标)一节中,成功进行到“打开设备管理器我们发现人体学输入设备下面有一个USB设备出现了“!”号”这一步,但第三步出现几个错误,首先帮助中由HID Descriptor tool生成 描述符号 是键盘的描述符合,改到鼠标后,编译DESCRIPTOR.C(145)ERROR C242:'struct':too many initializers出错。请问原因?
  1.     
  2. #include <reg52.h>      
  3. #include "D12Config.h"      
  4. #include "Descriptor.h"      
  5.      
  6. /* 设备描述符: 测试设备类型 */     
  7. #define USB_CLASS_CODE_TEST_CLASS_DEVICE                    0xdc      
  8.      
  9. /* 接口描述符: 子类代码 */     
  10. #define USB_SUBCLASS_CODE_TEST_CLASS_D12                    0xA0      
  11.      
  12. /* 接口描述符: 协议代码 */     
  13. #define USB_PROTOCOL_CODE_TEST_CLASS_D12                    0xB0      
  14. //该报告描述符号由HID Descriptor tool生成      
  15. code char MouseReportDescriptor[52] = {      
  16.     0x05, 0x01,                    // USAGE_PAGE (Generic Desktop)      
  17.     0x09, 0x02,                    // USAGE (Mouse)      
  18.     0xa1, 0x01,                    // COLLECTION (Application)      
  19.     0x09, 0x01,                    //   USAGE (Pointer)      
  20.     0xa1, 0x00,                    //   COLLECTION (Physical)      
  21.     0x05, 0x09,                    //     USAGE_PAGE (Button)      
  22.     0x19, 0x01,                    //     USAGE_MINIMUM (Button 1)      
  23.     0x29, 0x03,                    //     USAGE_MAXIMUM (Button 3)      
  24.     0x15, 0x00,                    //     LOGICAL_MINIMUM (0)      
  25.     0x25, 0x01,                    //     LOGICAL_MAXIMUM (1)      
  26.     0x95, 0x03,                    //     REPORT_COUNT (3)      
  27.     0x75, 0x01,                    //     REPORT_SIZE (1)      
  28.     0x81, 0x02,                    //     INPUT (Data,Var,Abs)      
  29.     0x95, 0x01,                    //     REPORT_COUNT (1)      
  30.     0x75, 0x05,                    //     REPORT_SIZE (5)      
  31.     0x81, 0x03,                    //     INPUT (Cnst,Var,Abs)      
  32.     0x05, 0x01,                    //     USAGE_PAGE (Generic Desktop)      
  33.     0x09, 0x30,                    //     USAGE (X)      
  34.     0x09, 0x31,                    //     USAGE (Y)      
  35.     0x09, 0x38,                    //     USAGE (Wheel)      
  36.     0x15, 0x81,                    //     LOGICAL_MINIMUM (-127)      
  37.     0x25, 0x7f,                    //     LOGICAL_MAXIMUM (127)      
  38.     0x75, 0x08,                    //     REPORT_SIZE (8)      
  39.     0x95, 0x03,                    //     REPORT_COUNT (3)      
  40.     0x81, 0x06,                    //     INPUT (Data,Var,Rel)      
  41.     0xc0,                          //   END_COLLECTION      
  42.     0xc0                           // END_COLLECTION      
  43. };      
  44.      
  45. //设备描述符      
  46. code USB_DEVICE_DESCRIPTOR DeviceDescr =      
  47. {      
  48.     sizeof(USB_DEVICE_DESCRIPTOR),              //设备描述符长度,= 12H      
  49.     USB_DEVICE_DESCRIPTOR_TYPE,                 //设备描述符类型,= 01H      
  50.     0x00,0x01,                                  //协议版本,= 1.10      
  51. //  USB_CLASS_CODE_TEST_CLASS_DEVICE,           //测试设备类型, = 0DCH      
  52.     0,                                          //设备类型由接口描述符提供       
  53.     0, 0,                                       //设备子类,设备协议      
  54.     EP0_PACKET_SIZE,                            //端点0最大数据包大小,= 10H        
  55.     0x71,0x04,                                  //PHILIPS公司的设备ID          
  56.     0x66,0x02,                                  //设备制造商定的产品ID      
  57.     0x00,0x01,                                  //设备系列号      
  58.     0, 0, 0,                                    //索引      
  59.     1                                           //可能的配置数      
  60. };      
  61.      
  62.      
  63. code USB_DESCRIPTOR usb_descr =      
  64. {      
  65. //配置描述符      
  66. {      
  67.     sizeof(USB_CONFIGURATION_DESCRIPTOR),       //配置描述符长度,= 09H      
  68.     USB_CONFIGURATION_DESCRIPTOR_TYPE,          //配置描述符类型,= 02H      
  69.     CONFIG_DESCRIPTOR_LENGTH,0x00,              //描述符总长度, = 002EH      
  70.     1,                                          //只支持1个接口      
  71.     1,                                          //配置值      
  72.     0,                                          //字符串描述符指针(无)      
  73.     0x80,                                      //总线供电         
  74.     0x32                                        //最大功耗(100mA)      
  75. },      
  76. //接口描述符      
  77. {      
  78.     sizeof(USB_INTERFACE_DESCRIPTOR),           //接口描述符长度,= 09H      
  79.     USB_INTERFACE_DESCRIPTOR_TYPE,              //接口描述符类型,= 04H      
  80.     0,                                          //接口数,只有1个      
  81.     0,                                          //可选配置,只有1个      
  82.     NUM_ENDPOINTS,                              //除端点0的端点索引数目,= 04H      
  83. //  USB_CLASS_CODE_TEST_CLASS_DEVICE,           //测试设备类型,= 0DCH      
  84.     0x03,                                       //人机接口设备(HID)类       
  85. //  USB_SUBCLASS_CODE_TEST_CLASS_D12,           //子类代码,= 0A0H      
  86.     1,                                          //使用的子类:(支持boot)          
  87. //  USB_PROTOCOL_CODE_TEST_CLASS_D12,           //协议代码,= 0B0H      
  88.     1,                                          //bInterfaceProtocol为1代表鼠标       
  89.     0                                          //字符串描述符索引      
  90. },      
  91. //hid_descriptor          
  92. {          
  93.     sizeof(USB_HID_DESCRIPTOR),                                     //HID描述符的字节数大小 0x09          
  94.     USB_HID_DESCRIPTOR_TYPE,                                //HID描述符类型编号0x21          
  95.     SWAP16(0x0110),                                         //协议版本,= 1.10          
  96.     0x21,                                                   //固件的国家地区代号,0x21为美国          
  97.     NUM_SUB_DESCRIPTORS,                                    //下级描述符的数量          
  98.     USB_REPORT_DESCRIPTOR_TYPE,                             //下级描述符为报告描述符          
  99.     SWAP16(sizeof(MouseReportDescriptor)),               //下级描述符的长度          
  100. },         
  101.      
  102.      
  103. /* //端点描述符,端点1输入    
  104. {    
  105.     sizeof(USB_ENDPOINT_DESCRIPTOR),            //端点描述符长度,= 07H    
  106.     USB_ENDPOINT_DESCRIPTOR_TYPE,               //端点描述符类型,= 05H    
  107.     0x81,                                       //端点1 IN    
  108.     USB_ENDPOINT_TYPE_INTERRUPT,                //中断传输, = 03H    
  109.     EP1_PACKET_SIZE,0x00,                       //端点最大包的大小,= 0010H    
  110.     10                                          //传输间隔时间,= 10ms    
  111. },    
  112. 端点描述符,端点1输出    
  113. {    
  114.     sizeof(USB_ENDPOINT_DESCRIPTOR),            //端点描述符长度,= 07H    
  115.     USB_ENDPOINT_DESCRIPTOR_TYPE,               //端点描述符类型,= 05H    
  116.     0x1,                                        //端点1 OUT    
  117.     USB_ENDPOINT_TYPE_INTERRUPT,                //中断传输,= 03H    
  118.     EP1_PACKET_SIZE,0x00,                       //端点最大包的大小,= 0010H    
  119.     10                                          //传输间隔时间,= 10ms    
  120. },    
  121. */     
  122. //端点2输入      
  123. {      
  124.     sizeof(USB_ENDPOINT_DESCRIPTOR),            //端点描述符长度,= 07H      
  125.     USB_ENDPOINT_DESCRIPTOR_TYPE,               //端点描述符类型,= 05H      
  126.     0x82,                                       //端点2 OUT      
  127.     USB_ENDPOINT_TYPE_INTERRUPT,                //中断传输,= 03H          
  128.     EP2_PACKET_SIZE,0x00,                       //端点最大包的大小,= 0040H      
  129.     0x01                                        //中断扫描时间:设置为1ms          
  130. },      
  131. //端点2输出      
  132. {      
  133.     sizeof(USB_ENDPOINT_DESCRIPTOR),            //端点描述符长度,= 07H      
  134.     USB_ENDPOINT_DESCRIPTOR_TYPE,               //端点描述符类型,= 05H      
  135.     0x2,                                        //端点2 IN          
  136.     USB_ENDPOINT_TYPE_INTERRUPT,                //中断传输,= 03H          
  137.     EP2_PACKET_SIZE,0x00,                       //端点最大包的大小,= 0040H      
  138.     0x01                                        //中断扫描时间:设置为1ms          
  139. }       
  140. };      
  141.      
  142.      


回复楼主
第1楼 作者:强强  发表时间:2010-6-30 21:55:33

_USB_DESCRIPTOR结构体没有修改正确

其中第三步->1->F这一步要求修改以下内容:
  1. /***********  D12 USB 各种描述符结构体 *********************/      
  2. typedef struct _USB_DESCRIPTOR {       
  3.     USB_CONFIGURATION_DESCRIPTOR ConfigDescr;       //配置描述符       
  4.     USB_INTERFACE_DESCRIPTOR InterfaceDescr;        //接口描述符       
  5.     USB_HID_DESCRIPTOR HidDescr;                    //HID描述符       
  6.     USB_ENDPOINT_DESCRIPTOR EP1_TXDescr;            //端点1输入描述符       
  7.     USB_ENDPOINT_DESCRIPTOR EP1_RXDescr;            //端点1输出描述符       
  8.     USB_ENDPOINT_DESCRIPTOR EP2_TXDescr;            //端点2输入描述符       
  9.     USB_ENDPOINT_DESCRIPTOR EP2_RXDescr;            //端点2输出描述符       
  10. } USB_DESCRIPTOR, *PUSB_DESCRIPTOR;   

  1. /***********  D12 USB 各种描述符结构体 *********************/      
  2. typedef struct _USB_DESCRIPTOR {       
  3.     USB_CONFIGURATION_DESCRIPTOR ConfigDescr;       //配置描述符       
  4.     USB_INTERFACE_DESCRIPTOR InterfaceDescr;        //接口描述符       
  5.     USB_HID_DESCRIPTOR HidDescr;                    //HID描述符       
  6. //  USB_ENDPOINT_DESCRIPTOR EP1_TXDescr;            //端点1输入描述符       
  7. //  USB_ENDPOINT_DESCRIPTOR EP1_RXDescr;            //端点1输出描述符       
  8.     USB_ENDPOINT_DESCRIPTOR EP2_TXDescr;            //端点2输入描述符       
  9.     USB_ENDPOINT_DESCRIPTOR EP2_RXDescr;            //端点2输出描述符       
  10. } USB_DESCRIPTOR, *PUSB_DESCRIPTOR;     
应在Descriptor.h中修改,其正确的描述应为:

修改Descriptor.h中以下内容:
  1. /***********  D12 USB 各种描述符结构体 *********************/      
  2. typedef struct _USB_DESCRIPTOR {       
  3.     USB_CONFIGURATION_DESCRIPTOR ConfigDescr;       //配置描述符       
  4.     USB_INTERFACE_DESCRIPTOR InterfaceDescr;        //接口描述符       
  5.     USB_ENDPOINT_DESCRIPTOR EP1_TXDescr;            //端点1输入描述符       
  6.     USB_ENDPOINT_DESCRIPTOR EP1_RXDescr;            //端点1输出描述符       
  7.     USB_ENDPOINT_DESCRIPTOR EP2_TXDescr;            //端点2输入描述符       
  8.     USB_ENDPOINT_DESCRIPTOR EP2_RXDescr;            //端点2输出描述符       
  9. } USB_DESCRIPTOR, *PUSB_DESCRIPTOR;     

  1. /***********  D12 USB 各种描述符结构体 *********************/      
  2. typedef struct _USB_DESCRIPTOR {       
  3.     USB_CONFIGURATION_DESCRIPTOR ConfigDescr;       //配置描述符       
  4.     USB_INTERFACE_DESCRIPTOR InterfaceDescr;        //接口描述符       
  5.     USB_HID_DESCRIPTOR HidDescr;                    //HID描述符       
  6. //  USB_ENDPOINT_DESCRIPTOR EP1_TXDescr;            //端点1输入描述符       
  7. //  USB_ENDPOINT_DESCRIPTOR EP1_RXDescr;            //端点1输出描述符       
  8.     USB_ENDPOINT_DESCRIPTOR EP2_TXDescr;            //端点2输入描述符       
  9.     USB_ENDPOINT_DESCRIPTOR EP2_RXDescr;            //端点2输出描述符       
  10. } USB_DESCRIPTOR, *PUSB_DESCRIPTOR;   
-------------------------------------------------------------
只要这把这里修改好就可以通过编译了

回复楼主    回复第1楼

 
 
本站程序由百合电子工作室开发和维护
Copyright @ baihe electric studio
渝ICP备09006681号-4