void USB_UpData(UINT8 mAddr, UINT8 mLen, PUINT8 mBuf) { //while(!(Read374Byte( REG_INTER_FLAG )&0x01)==0x01);//等待中断完成 //Write374Byte(REG_INTER_FLAG, (Read374Byte( REG_INTER_FLAG ))|0x01); while(busy); unsigned char i; buff[0]=0x3f; buff[1]=mLen; for ( i =2; i < mLen+2; i ++ ) buff[i] = *(mBuf+mAddr+i-2); Write374Block( RAM_ENDP2_TRAN, 64, buff ); // USB回传,此处的长度不需要为h Write374Byte( REG_USB_LENGTH, 64 ); Write374Byte( REG_USB_ENDP2, M_SET_EP2_TRAN_ACK( Read374Byte( REG_USB_ENDP2 ) )) ; busy=1; }
busy初始化为0,在in中断里,将busy清零,在主函数里调用上传函数,发现程序无法进入in中断,也就是说数据没有发到pc上边。我怀疑是 Write374Byte( REG_USB_ENDP2, M_SET_EP2_TRAN_ACK( Read374Byte( REG_USB_ENDP2 ) )) ; 的原因,但是不太清楚问题出在哪