打印

usb 编程学习

[复制链接]
1052|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
21learner|  楼主 | 2018-11-22 11:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我在网上买了一款usb 学习开发套件。该套件用的事pdiusbd12接口芯片。套件里有一些开发板的 源代码程序。如usb键盘演示固件程序源代码。这个源代码编写,下载,开发板运行都正常。源代码里 仅使用了 端点2的输入输出功能,没有用到端点1的功能。我想自己动手加进去。我仿照端点2的代码写法加了 端点描述结构的 关于端点1的代码段。端点1的输入输出功能代码暂时空着。对源代码做了两处改动,一是,二是增加了关于端点1的描述。整个代码编译,下载正常。usb设备插上pc机后 枚举一切正常。但就是不能工作,就连原来端点2的键盘功能也没有了。 请 前辈给予指教。谢谢了。

相关代码如下:
第一处改动

//interface_descritor                                     //接口描述符
        {
                sizeof(INTERFACE_DESCRIPTOR_STRUCT),      //接口描述符的字节数大小
                INTERFACE_DESCRIPTOR,                     //接口描述符类型编号
                0x00,                                     //接口编号为0
                0x00,                                     //该接口描述符的编号
               

                 4,                          //原来是2,用于两个端点,现在增加了两个端点,故改为4.
               


                 0x03,                                     //人机接口设备(HID)类  通知pc机,该设备用pc自带的HID驱动程序
                0x01,                                     //使用的子类:支持BIOS根启动Boot的子类
                0x01,                                     //使用的协议:键盘
                0x00                                      //接口描述符字符串索引
        },

第二处改动,端点1的描述是新加的,端点二,就是主端点的描述没动。

//endpoint_descriptor[]
        {
               
                //endpoint1in_descriptor
                {                                         //中断输入端点描述
                         sizeof(ENDPOINT_DESCRIPTOR_STRUCT),  //端点描述符的字节数大小
                         ENDPOINT_DESCRIPTOR,                 //端点描述符类型编号
                         POINT_1_IN,                          //端点号,输入端点1
                         ENDPOINT_TYPE_INTERRUPT,             //使用的传输类型:中断传输
                         SWAP16(0x0010),                      //该端点支持的最大包尺寸,16字节
                         0x0A                                 //中断扫描时间:设置为10ms
                },
                //endpoint1out_descriptor
                {                                         //中断输出端点描述
                         sizeof(ENDPOINT_DESCRIPTOR_STRUCT),  //端点描述符的字节数大小
                         ENDPOINT_DESCRIPTOR,                 //端点描述符类型编号
                         POINT_1_OUT,                         //端点号,输出端点1
                         ENDPOINT_TYPE_INTERRUPT,             //使用的传输类型:中断传输
                         SWAP16(0x0010),                      //该端点支持的最大包尺寸,16字节
                         0x0A                                 //中断扫描时间:设置为10ms
                },
               
//以上是我新加的关于端点1描述的 代码段


//下面是原来程序的 代码段,关于端点2的端点描述,没有动过。               
                 //主端点输入描述
                {                                         
               
                          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
                }
        }

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

18

主题

57

帖子

1

粉丝