USB-CDC相关代码请教
代码是AI8H的USB-CDC例程代码#ifdef EN_EP1OUT
void usb_out_ep1()
{
BYTE csr;
BYTE cnt;
usb_write_reg(INDEX, 1);
csr = usb_read_reg(OUTCSR1);
if (csr & OUTSTSTL)
{
usb_write_reg(OUTCSR1, OUTCLRDT);
}
if (csr & OUTOPRDY)
{
cnt = usb_read_reg(OUTCOUNT1);//读出最后接收到多少字节,并赋值给cnt
while (cnt--)
{
RxBuffer = usb_read_reg(FIFO1);//将FIFO1寄存器数据给到RxBuffer数组
}
if (RxWptr - RxRptr >= 256 - EP1OUT_SIZE)//EP1OUT_SIZE=64字节
{
UsbOutBusy = 1;
}
else
{
usb_write_reg(OUTCSR1, 0);
}
}
}
#endif
以上这段代码会进入USB中断,请问,如果是接收100字节,端点又只有64字节,是不是这个函数会进入2次中断,接收完100字节呢?
cnt = usb_read_reg(OUTCOUNT1);//读出最后接收到多少字节,并赋值给cnt
USB库例程的stc32_stc8_usb.h里OutNumber变量是不是读取的usb_read_reg(OUTCOUNT1); 呢?
【新提醒】32G12K128超级简单的USB-CDC虚拟串口应用及不停电下载(中断模式+查询模式) - USB:USB-CDC虚拟串口/就是串口,一箭双雕之USB转双串口,[鼠标+键盘]的HID复合设备 国芯技术交流网站 - AI32位8051交流社区https://www.stcaimcu.com/forum.php?mod=viewthread&tid=870&highlight=%E8%B6%85%E7%BA%A7%E7%AE%80%E5%8D%95USB&page=1&extra=#pid4981 大于端点长度会被拆分,应该是进一次中断接收64字节,再进入中断接收100-64=36字节 DebugLab 发表于 2024-11-27 10:43
大于端点长度会被拆分,应该是进一次中断接收64字节,再进入中断接收100-64=36字节 ...
我也是这么想的,可是USB库里的OutNumber相当于例程里的那个变量呢?
页:
[1]