STM32的TIM中Prescaler和ClockDivision有什么用以及计数器溢出时间计算
我们在stm32中需要使用到时钟,在设置时容易把Prescaler和ClockDivision混淆,为什么有时候ClockDivision不需要设置呢?一下是解释:
1. Prescaler(预分频器)
功能:Prescaler
的作用是降低定时器的输入时钟频率。通过设置 Prescaler
,可以使定时器的计数频率降低。其计算方式是通过将系统时钟频率除以 (Prescaler + 1)
来确定定时器的计数频率。
使用示例:例如,如果系统时钟为 72 MHz,您将 Prescaler
设置为 71,则定时器的计数频率为 72 MHz / (71 + 1) = 1 MHz。这意味着定时器每秒将计数 1,000,000 次。
2. ClockDivision(时钟分频)
功能:ClockDivision
主要用于选择计数器的时钟源的分频值。虽然它也会影响计数频率,但其分频处理是在 Prescaler
之后的操作。选择 ClockDivision
选项可以进一步降低计数频率(例如,将其降低到系统时钟频率的一半或四分之一),但通常在不需要的情况下不会影响主要应用。
值的选择:
TIM_CLOCKDIVISION_DIV1
:不分频(默认为全速)
TIM_CLOCKDIVISION_DIV2
:将时钟频率降低为一半
TIM_CLOCKDIVISION_DIV4
:将时钟频率降低为四分之一
最后,假如你要计算出每一个计数器溢出时间,在ClockDivision为零(我们一般不需要设置这个,因为是在Prescaler上的进一步分频)的情况下,公式为:
Period:计数器计满一个周期所需的计数值。
Prescaler:上面有讲过了。
Ft:时钟周期频率。
作者:可乐鸡翅好好吃