中级会员
 
- 积分
- 272
- 金钱
- 272
- 注册时间
- 2014-4-9
- 在线时间
- 9 小时
|
5金钱
在网络上下了个HID工程,原来用调试软件测试编辑运行可以正常接收发送数据,在此基础上写自己的代码,在快完成的时候发现接收正常的,但发送不正常了。在main函数里面一行行测试,发现以下规律
main()
{
while(1)
{
if(USB_Received_Flag) //接收到的数据usb发送回去
{
USB_Received_Flag=0;
ret = USB_GetData(data,sizeof(data));
USB_SendData(data,sizeof(data));
// delay_ms(100);// 此处延时基本无效 设延时1000也无用
}
delay_ms(100);//加此延时 ms大于10可以正常发送 ,<10是偶尔可以发送成功
(其它函数) //此后所有的函数不影响usb,注销不注销的结果都一样
} //while1
}//main
其中发送函数和原来的工程一样:
uint32_t USB_SendData(uint8_t *data,uint32_t dataNum)
{
UserToPMABufferCopy(data, ENDP2_TXADDR, dataNum);
SetEPTxCount(ENDP2, REPORT_COUNT);
SetEPTxValid(ENDP2);
return dataNum;
}
原来工程接收到数据马上发送也可以实现:
while(1)
{
if(USB_Received_Flag){
USB_Received_Flag=0;
ret = USB_GetData(data,sizeof(data));
USB_SendData(data,sizeof(data));
}
}
为什么会出现这种情况呢?
|
|