Previous: 8.2.2.1. RTCへの時刻設定 |
Up: 8.2.2. RTCの利用手順 |
Next: 8.2.2.3. RTCのカウンタ値の取得 |
ここまでの設定で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割込みを以下のいずれかのマクロで指定します。
|
||||||
戻り値 |
割込みの状態
|
サンプルプログラムでは、以下のようにして秒割込が発生したかどうかを確認しています。
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_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のカウンタ値の取得 |