初期化
他のペリフェラルと同様に、タイマを使う前に、タイマを初期化する必要があります。 前のセクションと同様に、初期化には2つの手順があります。タイマの電源を入れることとタイマを設定することです。
タイマの電源を入れることは簡単です。TIM6EN
ビットに1を設定するだけです。
このビットは、RCC
レジスタブロックのAPB1ENR
レジスタの中にあります。
#![allow(unused)] fn main() { // TIM6のタイマの電源を入れます。 rcc.apb1enr.modify(|_, w| w.tim6en().set_bit()); }
設定部分は、もう少し複雑です。
まず最初に、タイマをワンパルスモードで動作するように設定しなければなりません。
#![allow(unused)] fn main() { // OPM:ワンパルスモードを選択します。 // CEN:今はカウンタを無効にしておきます。 tim6.cr1.write(|w| w.opm().set_bit().cen().clear_bit()); }
次に、CNT
カウンタが1KHzの周波数で動作するようにします。なぜなら、delay
関数がミリ秒を引数として取り、1KHzは1ミリ秒の周期を生成するからです。
このために、プリスケーラを設定する必要があります。
#![allow(unused)] fn main() { // カウンタが1KHzで動作するようにプリスケーラを設定します。 tim6.psc.write(|w| w.psc().bits(psc)); }
プリスケーラに設定するpsc
の値は、あなたが見つけ出して下さい。
カウンタの周波数は、apb1 / (psc + 1)
でapb1
は8MHzであることを思い出して下さい。