ashwatermelon

ashwatermelon

【學習筆記】stm32單片機BKP,RTC,PWR

這幾天學了 stm32 的 BKP,RTC 和 PWR,單片機學習基本進入尾聲了,後面只剩下個看門狗還有個 flash 了。
那麼開始今天的學習筆記。

(一)PWR#

我們先講 PWR,因為後面的 BKP 和 RTC 都要開啟 PWR 時鐘,調用一些 PWR 功能。
什麼是 PWR 呢?
PWR 就是電源控制(Power Control),負責管理 STM32 內部的電源供電部分,可以實現可編程電壓監測器和低功耗模式的功能,可編程電壓監測器(PVD)可以監控 VDD 電源電壓,當 VDD 下降到 PVD 閾值以下或上升到 PVD 閾值之上時,PVD 會觸發中斷,用於執行緊急關閉任務。(PVD 功能還沒用過)
低功耗模式包括睡眠模式(Sleep)、停機模式(Stop)和待機模式(Standby),可在系統空閒時,降低 STM32 的功耗,延長設備使用時間。
其配置過程如下:

image

標準庫裡的 PWR 函數功能已經相當完整,操作起來簡直不要太簡單。
只需要先啟動 PWR 時鐘(睡眠模式甚至不需要啟動時鐘):
RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR,ENABLE);

然後我們調用如下函數進入相應的模式:
睡眠模式:__WFI();
停止模式:PWR_EnterSTOPMode();
待機模式:PWR_EnterSTANDBYMode();

需要注意的是進入低功耗模式後不能直接燒錄程序,需要按住復位鍵再燒錄程序並及時鬆開復位鍵。

(二)BKP#

image

江科大視頻裡提到過 TAMPER,但我們寫代碼的時候沒用過,這裡不討論,我們只需要寫 BKP 的儲存並且掉電不丟失就可以了。

這裡是 BKP 的結構:

image

VBAT 就是備用電源引腳,BKP 的掉電不丟失就是因為這個引腳供電。

代碼如下:

RCC_APB1PeriphClockCmd(RCC_APB1Periph_BKP,ENABLE);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR,ENABLE);

開啟時鐘

PWR_BackupAccessCmd(ENABLE);

開啟備用電源

BKP_WriteBackupRegister();

寫入

BKP_ReadBackupRegister();

讀出

(三)RTC#

使用 RTC 我們需要先理解 Unix 時間戳,還要學一些 <time.h> 的函數。

image

image

理解這些之後我們再來看 RTC

image

RTC 結構如下:

image

這裡注意時鐘源,一般選 LSE 外部低速時鐘,32.768kHz 的晶振,不過這玩意可能會不起振動(經常可能),我配置的時候用的 LSI,晶振頻率 40kHz。
還有,RTC 時鐘配置需要注意一下幾點:

image

下面是配置代碼,順便完成了時間戳的轉換:

image

image

那麼這些就是 BKP,RTC,PWR 的全部內容,潤了潤了(越寫越懶了,悲)。

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。