很多朋友在調(diào)試GD32 MCU的低功耗模式時(shí)會(huì)遇到一個(gè)問(wèn)題:程序中讓MCU進(jìn)入了Sleep、Deepsleep或者Standby模式,之后MCU就無(wú)法再下載程序了。這是因?yàn)樵诘凸哪J较拢琈CU的SW口和JTAG口是無(wú)法訪問(wèn)的。比如下面的程序就會(huì)導(dǎo)致該問(wèn)題發(fā)生:

該main函數(shù)中第一步是打開(kāi)PMU時(shí)鐘,然后馬上讓MCU進(jìn)入Deepsleep模式,當(dāng)你想要再次下載程序時(shí),IDE會(huì)有如下錯(cuò)誤提示(不同IDE報(bào)錯(cuò)不同):

遇到這種情況怎么辦呢?難道只能重新?lián)Q一顆芯片了?不不不,其實(shí)有方法解決這個(gè)問(wèn)題的。
方法一:
GD32 MCU的啟動(dòng)模式根據(jù)芯片上的BOOT0和BOOT1腳是可以選擇三種模式:

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



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

好了,今天的內(nèi)容就這些,如果還沒(méi)有學(xué)廢,那就評(píng)論區(qū)聊聊吧~記得點(diǎn)贊收藏加關(guān)注
-
單片機(jī)
+關(guān)注
關(guān)注
6076文章
45494瀏覽量
670237 -
mcu
+關(guān)注
關(guān)注
147文章
18924瀏覽量
397979 -
GD32
+關(guān)注
關(guān)注
7文章
432瀏覽量
27337
發(fā)布評(píng)論請(qǐng)先 登錄
MCU低功耗主要體現(xiàn)在哪些方面?
什么是低功耗設(shè)計(jì),如何評(píng)估低功耗MCU性能?
如何在 RTOS 中處理微控制器的低功耗特性
在多任務(wù)系統(tǒng)中,如何平衡任務(wù)調(diào)度以防止因高負(fù)載導(dǎo)致的再次進(jìn)入低功耗模式的延遲?
MCU芯片想實(shí)現(xiàn)低功耗如何做到?
CW32單片機(jī)UART低功耗模式的介紹
MCU主頻與低功耗設(shè)計(jì)黃金法則
CW32 UART低功耗模式詳解
gd32 env配置報(bào)錯(cuò)是什么原因呢?
GD32的串口DMA收發(fā)數(shù)據(jù)失敗怎么解決?
基于兆易創(chuàng)新GD32系列MCU的GUI智能屏顯解決方案
【RA4L1-SENSOR】07 低功耗待機(jī)模式及功耗實(shí)測(cè)
兆易創(chuàng)新GD32 MCU閃耀2025慕尼黑上海電子展
GD32 MCU進(jìn)入低功耗模式導(dǎo)致無(wú)法再進(jìn)行程序下載怎么辦?
評(píng)論