web-dev-qa-db-ja.com

STM32はRTC

STM32L051R8をプログラミングしていますが、次の問題があります。私はほとんどの時間スタンバイモードを使用しようとしていますが、RTCによってウェイクアップすることがあります。これは自動ウェイクアップです。スリープなしで作業する場合-すべてが完全に機能する場合、毎回RTC割り込みが発生しますが、スタンバイを使用する場合は-しないでください。

スタンバイを使用する場合、最初のサイクルは良好です。

  1. リセット
  2. rTCを設定する
  3. スタンバイに入る
  4. 割り込みを待っています
  5. 目を覚ます

ただし、2番目と次のサイクルはスタンバイに入った直後にウェイクアップします(3)。

7
luden

マイクロコントローラがスタンバイモードで、RTC割り込みが発生すると、WUF:ウェイクアップフラグがハードウェアによって設定されます PWR制御/ステータスレジスタ (ページ162)。

ビット0WUF:ウェイクアップフラグ

このビットはハードウェアによってセットされ、システムリセットまたはPWR電力制御レジスタ(PWR_CR)のCWUFビットをセットすることによってクリアされます。

0:ウェイクアップイベントは発生しませんでした

1:ウェイクアップイベントがWKUPピンまたはRTCアラーム(アラームAまたはアラームB)、RTC改ざんイベント、RTC TimeStampイベントまたはRTCウェイクアップ)。

最初、これはシステムリセットによってクリアされるため、最初のサイクルは問題ありません。ただし、スタンバイからウェイクアップした後は、PWR制御レジスタのCWUFビットを使用して手動でクリアする必要があります。これを行わないと、このビットがウェイクアップイベントの発生を通知するため、コントローラーはすぐにウェイクアップします。

レジスタに直接アクセスしてこのビットを設定するか、HALライブラリで次のマクロを使用できます。

__HAL_PWR_CLEAR_FLAG(PWR_FLAG_WU);
13
Bence Kaulics