STM32微控制器使用SWD(Serial wire debug)模式 下載程式出錯問題解決
最近在使用STM32F105微控制器做產品,使用SWD介面下載程式,遇到一些問題,得益於網上的一些文章最後得以解決,所以也想把問題解決的過程整理出來,以供出現同類問題的技術人員進行參考,本人沒有系統地學習SWD介面下載程式的過程(每天的時間都在趕開發進度,很難靜下心來系統地學習一項技術了,慚愧),只是提供一點經驗。
問題:使用SWD模式下載程式,遇到 Cannot access Memory (@ 0xe00ffff0, Read, Acc Size: 4 Byte) RDDI-DAP Error 等問題提示
問題發生以及解決的過程: 開始使用SWD模式下載程式都還比較順利,
隨著開發的程式增加,有一天突然不能正常下載程式了,提示資訊如下:
這個問題應該是經常出現的,通常降低下載的速度即可,但是已經降到10kHz了,還是提示上述的錯誤
最後將頻率降到5kHz,結果出現下面的錯誤提示,
後來在網上查了一下,感謝 夕陽西wisdom的博文,將微控制器復位,可以通過硬體或設定程式設計器軟體復位,再次以5kHz頻率下載,並設定擦出整片FLASH,
經過較長時間,出現下面提示
此時可以放開復位,重新按照正常方式進行操作了,此時可以正常下載程式了。 **分析:**在我們接上SWD偵錯程式時,STM32微控制器已經上電覆位並執行使用者程式了,如果使用者程式出現邏輯錯誤,會影響SWD下載程式的執行,所以會出現下載錯誤,使用者程式可能產生的影響是,中斷程式影響了SWD下載程式的執行,所以通常通過降低程式設計速度來解決,但是如果出現嚴重的邏輯錯誤,即使以最低的速度程式設計也會超時,此時保持持續的復位,使得微控制器上電後不能執行使用者程式,這樣下載程式就可以向前進行了,下載程式首先是擦除FLASH,擦除可以完成,但是後續的下載未必能正常完成,但在擦除之後再釋放復位,此時上電覆位後就沒有使用者程式的影響了,就可以正常下載程式了。