我在网上买了一款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
}
} |