正常情况下,调用usb_ep_recv会设置好DOEPLEN,里面指定了包数量和总长度。当USB收到数据包存到rxfifo的时候,PCNT会减1,当软件把rxfifo数据读走的时候,TLEN也会减。
现在有概率出现一种情况,就是一直来rxfifo非空的中断,从GRSTATP寄存器确定是有数据的,读完之后,DOEPLEN里的TLEN也确实变0了,但是PCNT始终是1,就导致一直有rxfifo非空的中断,读完还有,读完还有,但是始终不来传输完成中断TF。
用的是GD32W51x_RELEASE_V1.0.3里面的usb_printer例子测试的。
求求各位大佬,给点思路,想破头了。 |