你好!我在写USB接口打印机驱动,由于打印机的配置描述符过长,使用内部固件会有数据溢出,于是我就根据你们公司提供的外部固件程序的例子编写了一个外部固件的程序,基本是你们发给我的那个程序 我只做了一点修改,可是在程序执行到控制传输的数据阶段的时候发出标识包后,返回的状态是错误的,程序不能在执行下去,数据阶段不能够在进行下去,获得不了描述符. 下面是获取描述符的外部固件程序,请帮我看看 到底哪里出错了,谢谢. unsigned char get_descr_ex() { unsigned char descr_len,x,state,m; unsigned char *p=data_buf; endp7_mode=0x80; toggle_send(); wr_usb_data(8,Req_buf); //do{ state=issue_token(0x0d); if(state==USB_INT_SUCCESS) { endp6_mode=0xc0; toggle_recv(); //break; } else while(1); //}while(1); state=issue_token(0x09); //程序执行到这里state=0x2e,不是0x14.请问是什么原因 if(state==USB_INT_SUCCESS) { x=rd_usb_data(p); if(flag_config_2)descr_len=data_buf[2]-x; else descr_len=data_buf[0]-x; while(descr_len>0) { toggle_recv(); p+=x; if((state=issue_token(0x09))==USB_INT_SUCCESS) { m=rd_usb_data(p); descr_len-=m; x+=m; } else while(1); } } else while(1); // printf("data in failed\n"); endp7_mode=0xc0; toggle_send(); wr_usb_data(0,Req_buf); if(issue_token(0x01)==USB_INT_SUCCESS) { return(0x14); } else while(1); //printf("status failed\n"); }