我嘗試使用CH32V305做一個DAP調(diào)試器。USB設(shè)備這一塊已經(jīng)基本調(diào)試好,插上后可以認出CDC與DAP設(shè)備了。
但我在主程序里面這樣寫:
??? while(1){WFI();}
則USB設(shè)備就枚舉失敗了。用一個空的while(1),就沒任何問題。
全部差異只有這一個WFI()了。調(diào)試記錄可以看到有USB中斷產(chǎn)生,但獲取描述符這一步失敗。
我嘗試使用CH32V305做一個DAP調(diào)試器。USB設(shè)備這一塊已經(jīng)基本調(diào)試好,插上后可以認出CDC與DAP設(shè)備了。
但我在主程序里面這樣寫:
??? while(1){WFI();}
則USB設(shè)備就枚舉失敗了。用一個空的while(1),就沒任何問題。
全部差異只有這一個WFI()了。調(diào)試記錄可以看到有USB中斷產(chǎn)生,但獲取描述符這一步失敗。
您好,調(diào)用WFI會進入低功耗模式,直接放在while循環(huán)中會不停的進入睡眠模式,你可以具體說一下你的想法或目的,這樣的用法可能會有問題。可以通過郵箱(lzs@wch.cn)和我具體溝通一下。
主要是想這樣:
while(1){
????WFI();
????DAP_Handle();
}
想在沒有中斷和其他任務(wù)時進入低功耗狀態(tài)。以前在ARM上可以這樣用。RTOS的Idle也會調(diào)用WFI。
我猜測是wfi之后,usb未完成的DMA也被終止了吧。
似乎arm上,wfi只停止cpu核,并不停止外設(shè)的。
您好,CH32V305執(zhí)行WFI后會進入睡眠模式,該模式下外設(shè)時鐘也是開啟的,你可以在執(zhí)行WFI后加個延時試一下,若方便可將工程發(fā)我具體看一下,后續(xù)問題的溝通可通過郵箱和我溝通。
工程已經(jīng)發(fā)送,請幫忙看一下