我们在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上的进一步分频)的情况下,公式为: