So-net無料ブログ作成

STM32CubeMXに関する事 6 RTC割り込みを使う 1 [STM32F]

STM32CubeMXを使って割り込みを設定します。
makeCubeMxProjectForCoIDE_038.png


すでにRTCを有効にしていますので、RTCによる周期割り込みを行います。

1.STM32CubeMXのConfigurationタブからSystemのNVICをクリックしてRTCの割り込み優先度を調整します。
makeCubeMxProjectForCoIDE_038.png


2.ControlのRTCをクリックしてParameter Settingを開きます。
初期のカレンダーの値を設定しています。設定していますがSTM32F103のRTCはカレンダー機能を持っていませんので、ソフトウエア的に何かをしているのだと思います。
注意点は、時間は12時間表記、西暦は下位の2桁を入力する点でしょうか?
makeCubeMxProjectForCoIDE_039.png


3.コードを生成します。CoIDEのファイル構成が更新されますので、CoIDEのProjectウインドウ上のProject名を選択してF5キーを押します。
それでビルドすると、あらあらエラーが出ちゃいました。この作業、2回目ですが、もしかして2回目以降はこのバグが出るのかも。
makeCubeMxProjectForCoIDE_040.png


4.バッテリーバックアップ付き対策
このAitendoの基板にはバッテリーが搭載されている為、STM32F103のバックアップドメインは電源が落とされてしまっても、元の内容が消えません。RTCはこのバックアップドメインに属するので、電源断時も動いています。
このMX_RTC_Init関数の内部ではバックアップドメインのバックアップレジスタの内容が、以前設定された値であるかどうかでRTCの状況を判断しています。もしその値が正常であれば、RTCのカウンターの値(カレンダー)を変更しません!ってことが通常処理なのですが、今は今の時間を刻んで欲しいので、0x32F2と比較しているIF文を無効にしました。
makeCubeMxProjectForCoIDE_042.png


5.割り込み許可
1秒割り込み許可をMX_RTC_Init()の後に記述します。
  /* USER CODE BEGIN 2 */
  HAL_RTCEx_SetSecond_IT( &hrtc );
  /* USER CODE END 2 */
6.動かす
セミホスティングでカレンダー出力しています。
makeCubeMxProjectForCoIDE_041.png

7.割り込みが来ている事を確認してみる stm32f1xx_it.cの中にRTC_IRQHandlerと言う割り込みハンドラーが追加されています。 この中にBREAKを貼り、止めてみました。 makeCubeMxProjectForCoIDE_043.png
まあでも、このカレンダー機能は要らないかなぁ、、、 ひじょうにbuggyで、このまま使い続けて大丈夫なんだろうか、、、と思っているところです、、、はぁ。
ARMマイコンCortex-M教科書 (ARM教科書)

ARMマイコンCortex-M教科書 (ARM教科書)

  • 作者: 桑野 雅彦 共著 中森 章
  • 出版社/メーカー: CQ出版
  • 発売日: 2016/11/21
  • メディア: 単行本
アームズマガジン17年10月号

アームズマガジン17年10月号

  • 作者:
  • 出版社/メーカー: ホビージャパン
  • 発売日: 2017/08/26
  • メディア: 雑誌

nice!(0)  コメント(0) 

nice! 0

コメント 0

コメントを書く

お名前:[必須]
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

※ブログオーナーが承認したコメントのみ表示されます。

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。