初中生
最后登录1970-1-1
在线时间 小时
注册时间2020-11-23
|
在做一个USB摄像头驱动时,遇到一个怪问题,麻烦高手帮忙指点一下,谢谢
在刚开始调试时用USBH_IsocReceiveData接收数据后,再输出调试信息,再用USBH_LL_GetLastXferSize取接收数据的大小时能正常返回,但只要将中间的调试输出去掉,USBH_LL_GetXferSize就一直返回0了
代码如下:
volatile uint8_t tmp_packet_framebuffer[UVC_RX_FIFO_SIZE_LIMIT]={0};
USBH_IsocReceiveData(phost,
(uint8_t *) tmp_packet_framebuffer,
VIDEO_Handle->camera.EpSize,
VIDEO_Handle->camera.Pipe);
USBH_DbgLog("ISO1 %02x \t%3s\t\t%02x %02x %02x %02x %02x %02x %02x %02x - %02x %02x %02x %02x %02x %02x %02x %02x",
VIDEO_Handle->camera.Pipe,
"IN",
tmp_packet_framebuffer[0],
tmp_packet_framebuffer[1],
tmp_packet_framebuffer[2],
tmp_packet_framebuffer[3],
tmp_packet_framebuffer[4],
tmp_packet_framebuffer[5],
tmp_packet_framebuffer[6],
tmp_packet_framebuffer[7],
tmp_packet_framebuffer[8],
tmp_packet_framebuffer[9],
tmp_packet_framebuffer[10],
tmp_packet_framebuffer[11],
tmp_packet_framebuffer[12],
tmp_packet_framebuffer[13],
tmp_packet_framebuffer[14],
tmp_packet_framebuffer[15]
);
volatile uint32_trxlen = USBH_LL_GetLastXferSize(phost, VIDEO_Handle->camera.Pipe);
正常时输出:
DEBUG : ISO1 02 IN 0c 8e 8a 96 17 17 a0 2c - 29 17 1b 07 96 97 98 99
DEBUG : VIDEO_STATE_DATA_IN, rxlen : 1d0h
video_stream_process, size : 1d0h, total_packet : 7ah
DEBUG : ISO1 02 IN 0c 8d bd 50 3a 17 da 50 - 3a 17 31 07 ff d8 ff db
DEBUG : VIDEO_STATE_DATA_IN, rxlen : 220h
video_stream_process, size : 220h, total_packet : 7bh
EOF of Frame : 5 h
出问题的输出:
DEBUG : VIDEO_STATE_DATA_IN, rxlen : 0h
video_stream_process, size : 0h, total_packet : cbh
DEBUG : VIDEO_STATE_DATA_IN, rxlen : 0h
video_stream_process, size : 0h, total_packet : cch
|
|