Previous: 10.6.1.2. STANDBYモードへの移行 |
Up: 10.6.1. WAKEUPピンによる復帰 |
Next: 10.6.2. RTCアラームによる復帰 |
STANDBYモードから復帰した場合、「STANDBYモードから復帰してリセットがかかったこと」をStandByフラグによって知ることができます。このために使用するのがPWR_GetFlagStatus関数(ライブラリ 16?4)です。
ライブラリ 16?4 PWR_GetFlagStatus関数
関数プロトタイプ |
FlagStatus PWR_GetFlagStatus(uint32_t PWR_FLAG ) |
|||||||
動作 |
指定したフラグがセットされているかどうかを確認します。 |
|||||||
引数 |
PWR_FLAG |
確認する対象のフラグを以下のいずれかのマクロで指定します。
|
||||||
戻り値 |
フラグの状態(SET又はRESET) |
サンプルプログラムでは以下のようにして条件分岐させています。これにより通常の電源オンと単なる復帰とを区別できます。
if (PWR_GetFlagStatus(PWR_FLAG_SB) != RESET) |
フラグを確認するプログラムでは、確認した後に、PWR_ClearFlag関数(ライブラリ 16?5)でフラグをクリアしておきましょう。
ライブラリ 16?5 PWR_ClearFlag関数
関数プロトタイプ |
void PWR_ClearFlag(uint32_t PWR_FLAG ) |
|||||
動作 |
電源制御関係のフラグをクリアします。 |
|||||
引数 |
PWR_FLAG |
クリアする対象のフラグを以下のいずれかのマクロで指定します。
|
||||
戻り値 |
フラグの状態(SET又はRESET) |
サンプルプログラムでは以下のようにしてStandByフラグをクリアしています。以下のようにcprintf関数を実行しているわけですが、こちらの関数は当然実行されますので、ちゃんとターミナルにメッセージが表示されます。
PWR_ClearFlag(PWR_FLAG_SB); //Send recover message cprintf(“\r\nRecovered from Standby Mode. Type any key to re-enter into Standby Mode\r\n”); |
コラム16?1 STM32-H103のWAKEUPボタンについて
STM32-H103のWAKEUPボタンはSTM32のWAKEUPピンに接続されているのですが、その間にプルアップ処理されています。STM32はPA0をWAKEUPピンとして使用するように設定すると、内部的にプルダウンされます。そうするとPA0に入力される電位が中途半端な値となるため、WAKEUPピンとして正常に動作することが保証されません。 筆者が試したところ、WAKEUPピンをRUNモードへの復帰のためのトリガとして使用する分には問題なかったのですが、次項のRTCアラームを使用した復帰ができませんでした。STM32-H103を使用する場合には注意が必要です。 |
Previous: 10.6.1.2. STANDBYモードへの移行 |
Up: 10.6.1. WAKEUPピンによる復帰 |
Next: 10.6.2. RTCアラームによる復帰 |