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:时钟周期频率。

    作者:可乐鸡翅好好吃

    物联沃分享整理
    物联沃-IOTWORD物联网 » STM32的TIM中Prescaler和ClockDivision有什么用以及计数器溢出时间计算

    发表回复