この数日間、STM32 の BKP、RTC、PWR について学びました。マイコンの学習は基本的に終わりに近づいており、残るのはウォッチドッグとフラッシュだけです。では、今日の学習ノートを始めましょう。
(一)PWR#
まず PWR について説明します。なぜなら、後の BKP と RTC は PWR クロックを有効にし、いくつかの PWR 機能を呼び出す必要があるからです。
PWR とは何でしょうか?
PWR は電源制御(Power Control)で、STM32 内部の電源供給部分を管理します。プログラム可能な電圧モニターと低消費電力モードの機能を実現できます。プログラム可能な電圧モニター(PVD)は VDD 電源電圧を監視し、VDD が PVD の閾値以下に下がるか、PVD の閾値以上に上がると、PVD は割り込みをトリガーし、緊急シャットダウンタスクを実行します。(PVD 機能はまだ使用していません)
低消費電力モードにはスリープモード(Sleep)、ストップモード(Stop)、スタンバイモード(Standby)が含まれ、システムがアイドル状態のときに STM32 の消費電力を低下させ、デバイスの使用時間を延ばします。
その設定プロセスは以下の通りです:
スタンダードライブラリの PWR 関数はすでにかなり完全で、操作は非常に簡単です。
まず PWR クロックを起動するだけで(スリープモードではクロックを起動する必要すらありません):
RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR,ENABLE);
次に、以下の関数を呼び出して対応するモードに入ります:
スリープモード:__WFI();
ストップモード:PWR_EnterSTOPMode();
スタンバイモード:PWR_EnterSTANDBYMode();
低消費電力モードに入った後は、プログラムを直接書き込むことはできず、リセットボタンを押し続けてからプログラムを書き込み、タイミングよくリセットボタンを放す必要があります。
(二)BKP#
江科大のビデオで TAMPER について言及されましたが、私たちがコードを書くときには使用していませんので、ここでは議論しません。私たちが必要なのは、BKP の保存が電源オフでも失われないことだけです。
こちらが BKP の構造です:
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> のいくつかの関数を学ぶ必要があります。
これらを理解した後、RTC を見ていきましょう。
RTC の構造は以下の通りです:
ここで注意すべきはクロックソースで、一般的には LSE 外部低速クロック、32.768kHz のクリスタルを選択しますが、この装置は振動しないことがあります(頻繁にそうなる可能性があります)。私が設定したときは LSI を使用し、クリスタル周波数は 40kHz でした。
また、RTC のクロック設定にはいくつかの注意点があります:
以下は設定コードで、ついでにタイムスタンプの変換も行いました:
これで BKP、RTC、PWR のすべての内容は終了です。書くのがだんだん面倒になってきました、悲しいです。