cherry-embedded / CherryUSB

CherryUSB is a tiny and portable USB Stack (device & host) for embedded system with USB IP
https://cherryusb.readthedocs.io/
Apache License 2.0
1.17k stars 249 forks source link

bugfix: usbd_ep_start_write(CDC_IN_EP, NULL, 0) won't trigger ep tx interrupt #153

Closed saisesai closed 8 months ago

sakumisu commented 8 months ago

这个不对,代码初始化的时候已经开启了,HWREGH(USB_BASE + MUSB_TXIE_OFFSET) = USB_TXIE_EP0;

sakumisu commented 8 months ago

而且也不跟cdc有关系,这是控制传输的。

saisesai commented 8 months ago

这个dc的实现貌似并不是一开始就打开所有ep的rx和tx中断,比如tx部分在860-862行,如果传输完成,就会关闭对应的中断。

sakumisu commented 8 months ago

你看看你说的跟你改的是一个地方吗,你开的是端点0的,不是其他端点。其次,没传输之前本来就不应该开中断,万一错误触发了呢?

saisesai commented 8 months ago

我标题可能写的有点问题,最终造成的现象就是这样,实际情况是如果调用usbd_ep_start_write(CDC_IN_EP, NULL, 0),tx中断不会触发

sakumisu commented 8 months ago

我标题可能写的有点问题,最终造成的现象就是这样,实际情况是如果调用usbd_ep_start_write(CDC_IN_EP, NULL, 0),tx中断不会触发

现在看明白了,是有点问题。应该是之前的commit挪中断位置漏了

saisesai commented 8 months ago

修改以后f1c200s和air105都是可以正常跑起来的,应该就是这里一个问题

sakumisu commented 8 months ago

好吧是这个pr https://github.com/cherry-embedded/CherryUSB/pull/69 提交后导致的问题,把中断开启诺位置了。我这边审核没到位。抱歉。