Previous: 8.2.2. RTCの利用手順 |
Up: 8.2.2. RTCの利用手順 |
Next: 8.2.2.2. 割込みハンドラの作成 |
それではRTCに時間を設定してみましょう。実時間は、年・月・日・時・分・秒に分かれていますが、RTCに内蔵されているカウンタは一つだけです。そこでどうやって時間を表現するかが問題になります。ここでは24時間まで数えられればよいこととして、RTCにその日の開始から何秒経ったかを記録させることにします。カウンタが100なら午前0時1分40秒、1000なら0時16分40秒、10000なら午前2時46分40秒です。ちなみに
年月日までカウントする場合にはUNIXタイムがよく使用されます。UNIXタイムというのは1970年1月1日午前0時0分0秒からの経過秒数で日時を表す方法です。ただすでに21世紀になっていますので、新規開発ではきりのよいところで2000年1月1日を基準にするということでもよいかと思います。
サンプルプログラムではTime_Regulate関数で時刻を取得してその時刻に対応するカウント数を作っています。RTCカウンタに特定の値を設定するための関数がRTC_SetCounter関数(ライブラリ 14?10)です。
ライブラリ 14?10 RTC_SetCounter関数
関数プロトタイプ |
void RTC_SetCounter(uint32_t CounterValue ) |
|
動作 |
RTCのカウンタ値を設定します。 |
|
引数 |
CounterValue |
カウンタの値。 |
戻り値 |
無し |
RTCにすでに時間が設定されているのであれば、再びユーザに時間を設定させるというのは余計な手間を掛けるだけになります。そこでサンプルプログラムでは以前にプログラムが実行されたことがある場合には、条件分岐により、時間設定のルーチンを飛ばしていますた。ただリセットされると割込設定はリセットされて無効になっているので、再度有効にしておきます。
Previous: 8.2.2. RTCの利用手順 |
Up: 8.2.2. RTCの利用手順 |
Next: 8.2.2.2. 割込みハンドラの作成 |