STM32進入低功耗模式以及喚醒(RTC 中斷)

2021-09-04 16:13:20 字數 1230 閱讀 7484

此文獻給做微控制器工作的同僚,希望大家在嵌入式硬體的道路上越走越遠,第一篇,望大家多多指導,不喜勿噴!

這裡主要說一下,本人在除錯stm32低功耗功能時遇到的問題以及解決思路與大家分享一下。

在確認使用低功耗功能後,大家鐵定會通過不同途徑查詢相關的資料,了解到什麼是低功耗、低功耗有哪幾種以及不同模式之間的區別,最後還有一些程式擷取、說明,資料不少,但是能讓人一目了然理解的不太多,尤其是剛接觸這個功能的新手,或許是資歷尚淺,程式設計以及檢索資料能力還有待提高。

再此,我拋磚引玉,發表一篇我的除錯感受,我從  低功耗初體驗、低功耗功能說明、低功耗總結三個方面進行說明。

首先,低功耗初體驗。跟大家一樣,查到stm32的低功耗有三個模式,分別是睡眠模式、停止模式以及待機模式(stm32開發指南——庫函式版本321頁)。

這裡介紹的是停機模式,原因有以下亮點:功耗以及實用性。三個模式的功耗由高到低依次是睡眠、停機,最後是待機,既然待機功耗最低為什麼選停機模式,這是由於待機模式與停機模式都可以rtc喚醒,但是停機模式可以通過任意管腳的外部中斷喚醒,而待機模式只能通過nrst因腳傷的外部復位喚醒,侷限性太大。

第二部分,低功耗功能說明

/*rtc設定*/

rcc_apb1periphclockcmd(rcc_apb1periph_pwr | rcc_apb1periph_bkp, enable);

pwr_wakeuppincmd(enable);

pwr_backupaccesscmd(enable);

rtc_configuration();

nvic_configuration();

//mcu進入停機模式

void mcu_enterstopmode(void)

最後,低功耗總結

低功耗想要做到自己滿意的效果,需要程式與硬體配合,根據外部電路將引腳置成上拉或者下拉,減小不必要的電流損失;還有就是將開啟的外設關閉,如果忘了關閉可能會對結果有較大影響(尤其是又新增功能的時候,記得初始化的時候加上並除錯成功可以使用時,記得在進入低功耗關掉)。第一次寫,可能有好多說不明白的地方,附帶乙個工程,大家一起交流學習,好好體會有驚喜。

STM32低功耗模式 停止模式

停止模式是在cortex m3的深睡眠模式基礎上結合了外設的時鐘控制機制,在停止模式下電壓調節器可執行在正常或低功耗模式。此時在1.8v供電區域的的所有時鐘都被停止,pll hsi和hse rc振盪器的功能被禁止,sram和暫存器內容被保留下來。thumb指令不支援彙編內聯 採用如下方法實現執行彙編...

STM32低功耗設計

具體要點為 1 所有io管腳,如果高阻狀態埠是高電平,就設成上拉輸入,如果高阻狀態是低電平,設成下拉輸入,如果高阻是中間狀態,設成模擬輸入。這個很多人都提到過,必須的。作為輸出口就免了,待機你想輸出個什麼東西,一定要輸,硬體上加上下拉就可以了 2 兩個晶振輸入腳要remap成普通io!使用內部晶振。...

STM32的3種低功耗模式

睡眠模式 核心停止,外設如nvic,系統時鐘systick仍執行。停止模式 所有時鐘都已停止 1.8v核心電源工作 pll,his和hserc振盪器功能禁止 暫存器和sram內容保留。待機模式 1.8v核心電源關閉 只有備份暫存器和待機電路維持供電 暫存器和sram內容全部丟失 實現最低功耗。在待機...