メモ書きブログ

日々の覚書

STM32 のTimer

 

設定すべきは、PSC(prescaler)、CNT(count)、ARR(auto-reload register)の3つとなる。

 

CNTは0から始まり、PSCのクロックでカウントアップしていき、ARRに達した時点で、0に戻る。

(ARRから始0になったらARRになる、だったかも)


つまり、
PSCは48MHzの場合、48-1を入れておけば1usのTimerが出来る。
PSCに48000-1を入れれば、1msになる。
ARRに500を入れれば、500usのTimerになる。

1000usのタイマーの場合、

TIMx->DIER = TIM_DIER_UIE; /* Enable interrupt */
TIMx->PSC = 48 - 1;
TIMx->CNT = 0;
TIMx->ARR = (1 * 1000) - 1;
TIMx->CR1 |= TIM_CR1_CEN | TIM_CR1_ARPE; /* Timer enable */