性无码一区二区三区在线观看,少妇被爽到高潮在线观看,午夜精品一区二区三区,无码中文字幕人妻在线一区二区三区,无码精品国产一区二区三区免费

STM32CUBE軟件開發(fā)低功耗設(shè)備

ST的低功耗模式?jīng)]有NXP那么多種,大類有5類:1、睡眠模式,2、低功耗運(yùn)行模式3、低功耗睡眠模式4、停止模式 5、待機(jī)模式我看了一下,1、2、3類功耗偏高,不適合目前使用,第5類等于喚醒芯片復(fù)位,SRAM數(shù)據(jù)都不能保存,IO狀態(tài)也不能保證,這個(gè)也用不了,適合這個(gè)項(xiàng)目的就是第4、停止模式,手冊上標(biāo)注停止模式最低0.8uA,這個(gè)比一般的MCU低多了,完全夠用了,如下圖:

(2)低功耗調(diào)試經(jīng)驗(yàn)常規(guī)經(jīng)驗(yàn)(這個(gè)是參考前輩的經(jīng)驗(yàn)):

1、外設(shè)時(shí)鐘必須切換為內(nèi)部時(shí)鐘;

2、不用的外設(shè)全部關(guān)閉,要用再開就是了;

3、浮空引腳必須配置為下拉;這個(gè)直接在STM32cube軟件里面配置就行了

4、硬件上的上拉、下拉電阻切記不能隨便加,使用到的外圍芯片也要注意功耗問題;外圍的功能供電須加mos管做開關(guān)。

5、對進(jìn)入低功耗有好幾種情況可以選擇(睡眠、停機(jī)、待機(jī)),不同模式喚醒機(jī)制略有不同;6、你需要一個(gè)測試過的低功耗的DEMO,測試硬件上的問題或移植到你的工程,這是最靠譜的;這次是第一次使用ST的L系列,直接參考手冊做的電路,焊接的時(shí)候,專門留了一塊板子,外圍功能器件不焊接,只焊接MCU和芯片周圍的器件直接做了一塊最小系統(tǒng)板用了調(diào)試功耗,這個(gè)是我的習(xí)慣,一般做一個(gè)新項(xiàng)目,新MCU的話,會焊一塊最基本的板子,用來調(diào)功耗。然后找到官方的低功耗例程,來驗(yàn)證,這次開始功耗特別大,燒官方的例程也有300多uA,后來檢查電路,發(fā)現(xiàn)BOOT0的電平可選擇電阻選擇有問題,太小了,換了一個(gè)10M之后,功耗立馬降到3uA,這個(gè)基本上夠用了,待機(jī)電流也不是越低越好,現(xiàn)在的一次性鋰亞電池,做的容量都很大,待機(jī)電流太小,如果采集周期也很長的話,容易照成電池鈍化,也會影響使用周期。

(3)STM32CUBE使用經(jīng)驗(yàn)分享1. 新建一個(gè)工程第一步肯定是下載軟件,這個(gè)就不多說了,找官方下載就行了,對應(yīng)的L系列還需要安裝一個(gè)軟件包,之前用了F429,這次試用L053又下載了一個(gè)安裝包。雙擊打開這個(gè)軟件 

打開之后選擇新建一個(gè)工程:

等待軟件加載一些功能之后,選擇你的MCU

找到你的MCU之后,雙擊它就行了

就出現(xiàn)了我們可以配置的界面,下面就是我們選擇的MCU:

具體的使用大家慢慢摸索,哈哈。使用這個(gè)STM32cube軟件,也沒有像官方說的那樣,新手也能用好,我感覺完全的新手估計(jì)夠嗆,起碼時(shí)鐘樹就很難理解,之前搞飛思卡爾,也就是現(xiàn)在的NXP的,都是看寄存器手冊然后對照例程學(xué)習(xí),想一步到位估計(jì)夠嗆。有些經(jīng)驗(yàn)的,使用這個(gè)軟件配置初始化還比較合適,各項(xiàng)功能很清晰。

2. 配置我們需要的IO口和功能按照具體的項(xiàng)目配置IO口和功能,下圖是我最近這個(gè)項(xiàng)目用到的,3個(gè)串口,一個(gè)ADC監(jiān)視電池電壓,5個(gè)按鍵中斷,然后還有一些IO控制,內(nèi)部的EEPROM,RTC定時(shí)器和硬件看門狗。

本來也可以用內(nèi)部HSI,我擔(dān)心頻率不那么精準(zhǔn),串口通訊波特率可能會有些問題,還是加了一個(gè)外部8M晶振,配置一下時(shí)鐘樹。

配置完之后生成代碼,選著保存的目錄等等

還有一個(gè)自動配置未使用的IO 為輸入狀態(tài)

3. 在低功耗前提下各個(gè)功能程序處理經(jīng)驗(yàn)在低功耗前提下,使用各個(gè)功能,就要做到,用到打開,用完立即關(guān)閉。以采集電池電量為例,

如下

u16 Get_VBat(void)
{
        float  temp;
        u16 BATTER_VALUE,VREFINT_CAL;
        u16 Ref_Vol;
        u16 Vdc;
       
        MX_ADC_Init();  //重新初始化
       
        BATTER_VALUE = GET_ADC(ADC_CHANNEL_0);
        Ref_Vol = GET_ADC(ADC_CHANNEL_VREFINT);
               
        printf("電池:%d\r\n",BATTER_VALUE);
        printf("基準(zhǔn):%d\r\n",Ref_Vol);
       
        BATTER_VALUE = 2*BATTER_VALUE;
       
        temp=((float)BATTER_VALUE/Ref_Vol)*1.24;
        Vdc = (u16)(temp*1000);
        printf("Vdc=%u\r\n",Vdc);
       
        HAL_ADC_DeInit(&hadc);    //關(guān)閉ADC采集
        return Vdc;
}

使用ADC重新初始化,用完之后馬上關(guān)閉。

4. 低功耗實(shí)現(xiàn)命令低功耗命令實(shí)際就一句話就行了,再加上喚醒配置和暫停系統(tǒng)時(shí)鐘中斷。STM32系統(tǒng)自動就把時(shí)鐘重新選擇了,不需要我們自己弄,這個(gè)比較方便,之前做NXP的每一項(xiàng)低功耗對時(shí)鐘都有要求,進(jìn)之前要自己切換時(shí)鐘才行,不然可能會報(bào)錯。在停止模式下,VCORE 域中的所有時(shí)鐘都會停止,PLL、MSI、HSI16 和 HSE RC 振蕩器也被禁止。內(nèi)部 SRAM 和寄存器內(nèi)容將保留。具體函數(shù)如下:               

HAL_SuspendTick();     //掛起(暫停)系統(tǒng)時(shí)鐘中斷             

  HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON,                                    PWR_STOPENTRY_WFI);  //0.75ma  WFI任意中斷喚醒  WFE喚醒事件             

  HAL_ResumeTick();           // /*喚醒之后恢復(fù)系統(tǒng)時(shí)鐘中斷 */STOP模式LPUART1和任意的外部中斷,RTC中斷都可以喚醒,喚醒之后需要重新初始化系統(tǒng)時(shí)鐘,才能保證你的功能正常運(yùn)行??偨Y(jié):整體來說STM32L053的體驗(yàn)還不錯,功耗也很低,整體這個(gè)項(xiàng)目畫板子焊接調(diào)試2周多的時(shí)間就基本上搞定,目前搞了幾臺設(shè)備到現(xiàn)場去測試了,大功能沒啥問題,哈哈。這個(gè)項(xiàng)目使用的功能不多,主要就是串口和低功耗,然后使用了內(nèi)部的EEPROM保存一些關(guān)鍵參數(shù),希望能給大家一點(diǎn)有用的幫助。 

聲明:本內(nèi)容為作者獨(dú)立觀點(diǎn),不代表電子星球立場。未經(jīng)允許不得轉(zhuǎn)載。授權(quán)事宜與稿件投訴,請聯(lián)系:editor@netbroad.com
覺得內(nèi)容不錯的朋友,別忘了一鍵三連哦!
贊 4
收藏 3
關(guān)注 210
成為作者 賺取收益
全部留言
0/200
成為第一個(gè)和作者交流的人吧