ch32v305使用WFI后USB设备不正常

我尝试使用CH32V305做一个DAP调试器。USB设备这一块已经基本调试好,插上后可以认出CDC与DAP设备了。

但我在主程序里面这样写:

    while(1){WFI();}

则USB设备就枚举失败了。用一个空的while(1),就没任何问题。

全部差异只有这一个WFI()了。调试记录可以看到有USB中断产生,但获取描述符这一步失败。

您好,调用WFI会进入低功耗模式,直接放在while循环中会不停的进入睡眠模式,你可以具体说一下你的想法或目的,这样的用法可能会有问题。可以通过邮箱(lzs@wch.cn)和我具体沟通一下。


主要是想这样:

while(1){

    WFI();

    DAP_Handle();

}

想在没有中断和其他任务时进入低功耗状态。以前在ARM上可以这样用。RTOS的Idle也会调用WFI。

我猜测是wfi之后,usb未完成的DMA也被终止了吧。

似乎arm上,wfi只停止cpu核,并不停止外设的。


您好,CH32V305执行WFI后会进入睡眠模式,该模式下外设时钟也是开启的,你可以在执行WFI后加个延时试一下,若方便可将工程发我具体看一下,后续问题的沟通可通过邮箱和我沟通。


工程已经发送,请帮忙看一下


只有登录才能回复,可以选择微信账号登录