void send_data(unsigned short len,uint8 *buf) { uint8 l,s; while(len) /* 连续输出数据块给USB打印机 */ { toggle_send(tog_send); /* 数据同步 */ l=len>endp_out_size?endp_out_size:len;/* 单次发送不能超过端点尺寸 */ wr_usb_data(1,buf); /* 将数据先复制到CH375芯片中 */ s=issue_token((endp_out_addr<<4)|DEF_USB_PID_OUT);/* 请求CH375输出数据 */ if(s==USB_INT_SUCCESS) /* CH375成功发出数据 */ { tog_send=~tog_send; /* 切换DATA0和DATA1进行数据同步 */ len-=1; /* 计数 */ buf+=1; /* 操作成功 */ } else if(s==USB_INT_RET_NAK) /* USB打印机正忙,如果未执行SET_RETRY命令则CH375自动重试,所以不会返回USB_INT_RET_NAK状态 */ {} else { clr_stall(endp_out_addr); /* 操作失败,正常情况下不会失败 */ tog_send=0; /* 操作失败 */ } } }
不管发送什么数据,执行这个函数时的s值一直都是0x28,不解?[Emot]1[/Emot]