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清零,在主函數(shù)里調(diào)用上傳函數(shù),發(fā)現(xiàn)程序無法進(jìn)入in中斷,也就是說數(shù)據(jù)沒有發(fā)到pc上邊。我懷疑是 Write374Byte( REG_USB_ENDP2, M_SET_EP2_TRAN_ACK( Read374Byte( REG_USB_ENDP2 ) )) ; 的原因,但是不太清楚問題出在哪