初级会员

- 积分
- 169
- 金钱
- 169
- 注册时间
- 2013-4-12
- 在线时间
- 32 小时
|
1金钱
本帖最后由 lmlm512 于 2017-10-13 12:23 编辑
有一个数据流,从USB_CDC中连续不断传输。数据是串口接收透传到USB_CDC发送的,在数据流中检索数据包0x80 0x40 0x00 0x80 0x00 是否已经透传通过了。
if(p_data->RxXferHead!=p_data->RxXferTail) //检索数据是否有数据
{
USBH_CDC_Transmit(&hUsbHostFS,p_data->RxXferTail,1); //有数据就通过USB发送
//USBH_Delay(5);
memcpy(CheckData,p_data->RxXferTail,5);
if(CheckData[0]==0x80) //debug 断点1
if(CheckData[1]==0x40)
if(CheckData[2]==0x00)
if(CheckData[3]==0x80)
if(CheckData[4]==0x00)
{
GetTheData=1; //该数据被发送
}
p_data->RxXferTail++; //发送下一个字节
if(p_data->RxXferTail>=p_data->RxXferSize+p_data->pRxBuffPtr) //指针越界,恢复到数组头 FIFO
p_data->RxXferTail=p_data->pRxBuffPtr;
}
1. 不加USBH_Delay(5); 这句,CheckData这个数组里没有数据,GetTheData=1;不会执行;
加USBH_Delay(5); 这句, CheckData这个数组里有数据,GetTheData=1;会执行;
2. 不加USBH_Delay(5); 这句 ,在if(CheckData[0]==0x80) 的地方设一个断点,仿真测试正常,CheckData这个数组里有数据,GetTheData=1;会执行;
不知道什么问题,或者大家有什么思路没。
|
|