マイコン入門spacer ad
トップページに戻る(マイコン徹底入門:STM32で始めるARM/Cortex-M3組み込み開発)
「マイコン徹底入門」とは? |  「マイコン徹底入門」を読む |  ダウンロード |  掲示板 |  筆者の自己紹介


Previous: 8.2.2.1. RTCへの時刻設定

Up: 8.2.2. RTCの利用手順

Next: 8.2.2.3. RTCのカウンタ値の取得


マイコン徹底入門:周辺回路編:STM32のペリフェラルを活用: 8. リアルタイムクロック: 8.2. リアルタイムクロックの利用: 8.2.2. RTCの利用手順:

8.2.2.2. 割込みハンドラの作成

 ここまでの設定でRTCは現在時刻をカウントする時計として機能しています。しかしこのままでは、1日の秒数である86400秒を超えてもカウントし続けてしまう、時刻を表示したいと思っても、基準となるタイミングがわからないという問題があります。そこでRTCの秒割込を利用して、86400秒毎にカウンタをゼロに戻す、1秒経つ毎に時間を表示するという処理を実装します。

 次に割り込み処理ルーチンですが、ハンドラ関数名はRTC_IRQHandlerになります。

void RTC_IRQHandler(void)

{

-----------

}

 この関数はRTC割込(秒割込・更新割込・オーバーフロー割込)のどれかが発生すれば呼び出されれます。そのため実際の処理にあたっては、RTC割込のうちどの割込が発生したかを確認する必要があります。この確認等に使用するのがRTC_GetITStatus関数(ライブラリ 14?11)です。

ライブラリ 14?11 RTC_GetITStatus関数

関数プロトタイプ

ITStatus RTC_GetITStatus ( uint16_t RTC_IT )

 

動作

指定したRTC割込みが発生しているかどうかを確認します。

引数

RTC_IT

確認対象とするRTC割込みを以下のいずれかのマクロで指定します。

RTC_IT_OW

オーバーフロー割込み

RTC_IT_ALR

アラーム割込み

RTC_IT_SEC

秒割込み

戻り値

割込みの状態

SET

指定した割込みが発生している

RESET

指定した割込みは発生していない

 サンプルプログラムでは、以下のようにして秒割込が発生したかどうかを確認しています。

if (RTC_GetITStatus(RTC_IT_SEC) != RESET)

 他の割込と同様、割込ルーチンが開始されたのであれば、連続して割り込み処理を行う必要はありませんので、RTC_ClearITPendingBit関数(ライブラリ 14?12)を使用して、割込ペンディングビットをクリアしておきます。

ライブラリ 14?12 RTC_ClearITPendingBit関数

関数プロトタイプ

void RTC_ClearITPendingBit(uint16_t RTC_IT )

 

動作

指定したRTC割込のペンディングビットをクリアします。

引数

RTC_IT

クリア対象とするRTC割込の種類。以下のマクロを組み合わせて指定します。

RTC_IT_OW

オーバーフロー割込

RTC_IT_ALR

アラーム割込

RTC_IT_SEC

秒割込

戻り値

無し

 RTC_ClearITPendingBit関数は複数の対象を指定できますが、ここでは秒割込のペンディングフラグのみをクリアします。

/* Clear the RTC Second interrupt */

RTC_ClearITPendingBit(RTC_IT_SEC);


Previous: 8.2.2.1. RTCへの時刻設定

Up: 8.2.2. RTCの利用手順

Next: 8.2.2.3. RTCのカウンタ値の取得


このページはITと知的財産の法律情報「法務ネット」の管理人が制作・運営しています。
_Toc266801166