使用的中斷有:
1) systick 中斷,配置超時時間為 5ms;
2) uart 的 IDLE,DMA 的 TC,HT 中斷;
在 systick 時間到期發(fā)現(xiàn)沒有事情可做,就調(diào)用了 __WFI();
1)如果在 systick 到期后只讓 LED 閃爍,沒有串口通訊,也就是說沒有 uart 和 dma 中斷,程序運行一直都正常;
2)當進行串口數(shù)據(jù)收發(fā)(波特率115200): 20ms 間隔發(fā)送 250 字節(jié),很快就發(fā)現(xiàn) MCU 無法被喚醒,數(shù)據(jù)無法收發(fā),LED 也不閃爍;
發(fā)生這種情況之后,通過 SDI 也無法下載程序,必須要復(fù)位了;
上邊這種測試場景只需要把 __WFI() 注釋掉,連續(xù)串口通訊 10 分鐘 MCU 都運行正常,也不會發(fā)生丟數(shù)據(jù)的情況。
請問 __WFI() 正確的使用方式是?
查看: 1166
回復(fù): 2
CH32V003 使用 __WFI() 后有概率喚不醒 MCU
熱門產(chǎn)品 :
CH32V317: 互聯(lián)型青稞RISC-V MCU
您好,若需要進入睡眠模式,直接調(diào)用__WFI()函數(shù)即可??梢詸z查一下出現(xiàn)問題之后程序是不是進HardFault或者跑飛了,若方便,可將工程發(fā)至我的郵箱(lzs@wch.cn),這邊測試一下,后續(xù)問題的溝通也可以通過郵箱進行溝通。
郵件已發(fā)送,請查收,謝謝
請勿發(fā)布廣告和違法內(nèi)容, 代碼可以選擇編輯器代碼語言格式, 更易他人閱讀幫助您, 或者留下聯(lián)系方式,以便更好更快服務(wù)您
只有登錄才能回復(fù),可以選擇微信賬號登錄