Previous: 8.2.1.7. RTC割込みの有効化 |
Up: 8.2.1. RTCの初期化手順 |
Next: 8.2.2. RTCの利用手順 |
次にRTCのカウントの速度を設定します。時計として使用する際には、1カウントが1秒になるように設定すると使いやすいでしょう。RTCのクロック源であるLSEは32.768KHzですから、32768で分周すると、1カウント1秒になります。この分周比を設定するための命令が、RTC_SetPrescaler関数(ライブラリ 14?9)です。
ライブラリ 14?9 RTC_SetPrescaler関数
関数プロトタイプ |
void RTC_SetPrescaler(uint32_t PrescalerValue ) |
|
動作 |
RTCのプリスケーラ値を設定します。 |
|
引数 |
PrescalerValue |
プリスケーラの値。 |
戻り値 |
無し |
RTCがカウントされるのはプリスケーラが設定値になった時ではなく、設定値をオーバーフローするときです。プリスケーラには、設定したい分周比から1を引いた数を設定します。以下のように32767と設定すると、32768回目のクロックでプリスケーラがオーバーフローするので、この時点でRTCがカウントします。
ここでも忘れずにRTC_WaitForLastTask関数を実行しておきます。
/* Set RTC prescaler: set RTC period to 1sec */ RTC_SetPrescaler(32767); /* RTC period = RTCCLK/RTC_PR = (32.768 KHz)/(32767+1) */ /* Wait until last write operation on RTC registers has finished */ RTC_WaitForLastTask(); |
長かったですが、ここまででRTCの初期化処理が完了です。この時点でRTCはすでにカウントを開始しています。
Previous: 8.2.1.7. RTC割込みの有効化 |
Up: 8.2.1. RTCの初期化手順 |
Next: 8.2.2. RTCの利用手順 |