很多朋友在調試GD32 MCU的低功耗模式時會遇到一個問題:程序中讓MCU進入了Sleep、Deepsleep或者Standby模式,之后MCU就無法再下載程序了。這是因為在低功耗模式下,MCU的SW口和JTAG口是無法訪問的。比如下面的程序就會導致該問題發生:

該main函數中第一步是打開PMU時鐘,然后馬上讓MCU進入Deepsleep模式,當你想要再次下載程序時,IDE會有如下錯誤提示(不同IDE報錯不同):

遇到這種情況怎么辦呢?難道只能重新換一顆芯片了?不不不,其實有方法解決這個問題的。
方法一:
GD32 MCU的啟動模式根據芯片上的BOOT0和BOOT1腳是可以選擇三種模式:

一般情況下,BOOT0需要接地,也就是程序是從主Flash啟動的,即從用戶代碼區啟動,此時代碼會運行到進入Deepsleep的語句。如果將BOOT0拉高,再重新上電MCU,此時程序會從出廠引導裝載程序(ISP)或者片上SRAM運行,這樣就不會運行用戶代碼,也就不會再讓MCU進入低功耗了,此時通過IDE的全片擦除功能將Flash中的程序擦除掉,再將BOOT0恢復為低并重新上電后,就可以重新下載程序啦。
以聚沃東方紅開發板為例:



只需要將上圖中方框處的兩個排針用跳線帽短接,再將Flash擦除即可。
方法二:
如果板子上的BOOT0不好再接高怎么辦呢?不妨試試下面的辦法:
將MCU的NRST腳和仿真器的NRST腳相連,這樣在重新下載程序時,仿真器會先拉低NRST腳讓MCU復位,再在很短的時間內進行程序下載。但這種辦法不是每次都有效,這取決于是仿真器先進入下載狀態還是MCU先進入低功耗狀態。
一些建議:
1、在調試低功耗模式時,可以在main函數之前增加幾秒鐘的延時,這樣在復位MCU后,在MCU進入低功耗前,你可以有足夠的時間進行新的程序下載;
2、程序中設計算法,讓一些條件達到后才讓MCU進入低功耗模式,比如按鍵,這樣在復位MCU后,就可以不讓MCU進入低功耗了:

好了,今天的內容就這些,如果還沒有學廢,那就評論區聊聊吧~記得點贊收藏加關注
-
單片機
+關注
關注
6043文章
44621瀏覽量
638615 -
mcu
+關注
關注
146文章
17324瀏覽量
352658 -
GD32
+關注
關注
7文章
413瀏覽量
24475
發布評論請先 登錄
相關推薦
【GD32 MCU入門教程】GD32 MCU GPIO 結構與使用注意事項

【GD32 MCU 入門教程】GD32 MCU 常見外設介紹(14)RTC 模塊介紹

GD32 MCU 入門教程】GD32 MCU 常見外設介紹(12)FMC 模塊介紹

【GD32 MCU 入門教程】二、GD32 MCU 燒錄說明(3)脫機燒錄

【GD32 MCU 入門教程】二、GD32 MCU 燒錄說明 (2)SWD/JTAG在線下載

【GD32 MCU 入門教程】二、GD32 MCU 燒錄說明(1)ISP 燒錄

【GD32 MCU 入門教程】一、GD32 MCU 開發環境搭建(3)使用 Embedded Builder 開發 GD32

【GD32 MCU 入門教程】一、GD32 MCU 開發環境搭建(2)使用 IAR 開發 GD32

【GD32 MCU 入門教程】一、GD32 MCU 開發環境搭建(1)使用Keil開發GD32

GD32F303無法進入低功耗模式的原因?怎么解決?
BlueNRG-LP有時無法進入低功耗模式的原因?
GD32 MCU ISP失敗的原因

評論