因此在進(jìn)入STOPMODE之前,需要做:
1、將N.C的GPIO統(tǒng)一配置為IPU/IPD;
2、檢查一些Signal的輸入Active是High/Low,相應(yīng)進(jìn)行配置為IPD/IPU,即避免在內(nèi)部上/下拉電阻上消耗電流,而且該電流理論值為VCC/R = 3/40 =75uA;
3、如果外部晶振不使用,必須將GPIO配置為IPU/IPD/PPLow,不允許配置為floating,否則會(huì)消耗極大的電流 200uA+;
4*、加入進(jìn)入STOPMODE前,不允許將PWR的CLK關(guān)閉,這部分牽涉低功耗模式,實(shí)際測(cè)試關(guān)閉能用,也能喚醒,但是電流會(huì)增加10uA+;
5、配置GPIO為輸出時(shí),根據(jù)輸出的常態(tài)選擇上拉/下拉,如閑置輸出為0,則配置為下拉,輸出閑置為1,則配置上拉;
6、另外特別說明的是->從Stopmode喚醒后,系統(tǒng)會(huì)自動(dòng)切換到HSI,如果進(jìn)入前使用的是外部晶振/PLL(PLL的clksource = HSI/HSE)因此必須調(diào)用System_Init(),對(duì)RCC重新初始化,否則喚醒后主頻發(fā)生改變,會(huì)影響系統(tǒng);
調(diào)試經(jīng)驗(yàn)分享:
經(jīng)常在移植新的產(chǎn)品方案時(shí),都會(huì)遇到待機(jī)電流不能一步到位,需要測(cè)試、調(diào)試的過程,在此分享一個(gè)土辦法。
1、在調(diào)用EnterStopmode前,將GPIO的所有配置寄存器printf,比對(duì)GPIO的初始化表,看是否在進(jìn)入STOP前,在其他地方對(duì)GPIO配置做了改動(dòng);
調(diào)試過程告訴我,基本都是在進(jìn)入stopmode時(shí),其他的GPIO被另外配置錯(cuò)誤導(dǎo)致;
2、在調(diào)用EnterStopmode前,將GPIO的所有配置全部重新配置一次,也可以快速的檢驗(yàn)是否是這個(gè)環(huán)節(jié)出問題。