为什么获取不了描述符?

hcn: 请问我用下面的内置固件命令获取描述符,为什么只能得到描述符的长度,却不能获取具体的描述符信息? unsigned char get_descr( unsigned char type ) { /* 从设备端获取描述符 */ CH375_WR_CMD_PORT( CMD_GET_DESCR ); CH375_WR_DAT_PORT( type ); /* 描述符类型, 只支持1(设备)或者2(配置) */ return( wait_interrupt() ); /* 等待CH375操作完成 */ } 主函数中,用 while(get_descr(1)!=USB_INT_SUCCESS); l=rd_usb_data(buffer);

能得到l的值,buffer数组里却没有相关的描述符号信息。

不会的!这个函数是将数据全部读取完了之后在返回数据长度的,你将你buffer里面的数据输出来看下。


hcn: 是这样的,我定义了buffer[8],初始化数组每个元素都为5,但执行程序后,l的值是描述符号的长度,但buffer数组的元素仍为5。


你要将你的缓冲区定义大点,你的设备描述符长度为0X34,那么的话,设备描述符就会大于52个字节,建议缓冲区长度定义为64,即buffer[64];你上面的数据溢出了,当然会出问题。


hcn:   不是这样的。   我之所以将数组定义这么小,是担心单片机ram空间不够,我将长度定义为8,按道理讲,怎么也会得到几个数据啊。可是一个都得不到。


你如果定义的数组小的话,是可以读出几个数据的,你这种情况我建议你将这个程序烧到单片机里面去运行下看可以不可以读到数据(通过串口将数据显示出来)。


既然获取的长度是正确的话,那大概就是数据存储上的问题了。


只有登录才能回复,可以选择微信账号登录