初期化

他のペリフェラルと同様に、タイマを使う前に、タイマを初期化する必要があります。 前のセクションと同様に、初期化には2つの手順があります。タイマの電源を入れることとタイマを設定することです。

タイマの電源を入れることは簡単です。TIM6ENビットに1を設定するだけです。 このビットは、RCCレジスタブロックのAPB1ENRレジスタの中にあります。


# #![allow(unused_variables)]
#fn main() {
    // TIM6のタイマの電源を入れます。
    rcc.apb1enr.modify(|_, w| w.tim6en().set_bit());
#}

設定部分は、もう少し複雑です。

まず最初に、タイマをワンパルスモードで動作するように設定しなければなりません。


# #![allow(unused_variables)]
#fn main() {
    // OPM:ワンパルスモードを選択します。
    // CEN:今はカウンタを無効にしておきます。
    tim6.cr1.write(|w| w.opm().set_bit().cen().clear_bit());
#}

次に、CNTカウンタが1KHzの周波数で動作するようにします。なぜなら、delay関数がミリ秒を引数として取り、1KHzは1ミリ秒の周期を生成するからです。 このために、プリスケーラを設定する必要があります。


# #![allow(unused_variables)]
#fn main() {
    // カウンタが1KHzで動作するようにプリスケーラを設定します。
    tim6.psc.write(|w| w.psc().bits(psc));
#}

プリスケーラに設定するpscの値は、あなたが見つけ出して下さい。 カウンタの周波数は、apb1 / (psc + 1)apb1は8MHzであることを思い出して下さい。