void EP3_OUT_Callback(void)
{
USB_Rx_length = GetEPRxCount(ENDP3); /*接收数据的长度*/
PMAToUserBufferCopy(USB_Rx_Buffer, ENDP3_RXADDR, USB_Rx_length); /*把主机发送的数据拷贝到设备*/
SetEPRxValid(ENDP3); /*在端点3上使能数据接收*/
}
main.c中
int main (void)
{
.
.
.
while (USB_Rx_Buffer[0] == 0x11)
{
while(1)
{
......(程序时长大约4ms,把它看成延时4MS好了)
if( USB_Rx_length==4)
{
........
}
}
}
第一次通信,上位机给下位机发送十六进制数11时每次都可以接收到,但是再给发给下位机4个字节数时,有时接收到,有时接收不到,接收到时,程序在while(1)中做循环,第二次接收时就接收不到4个字节的数据了,是因为时间太长的原因吗 |