STM32计数器计算时间间隔
STM32定时器计算
预分频器(Prescaler)是定时器模块中的一个功能模块,用于减小定时器的输入时钟频率,从而影响定时器的计数频率。预分频器允许用户通过设置一个整数值来调整计数器的工作频率,以满足不同的应用需求。
作用:
-
降低计数器的计数频率: 预分频器的主要作用是降低输入到计数器的时钟频率。这对于需要较长时间跨度或低计数频率的应用非常有用。
-
调整计数范围: 通过降低计数器的输入时钟频率,预分频器也间接影响了计数器的计数范围。较低的计数频率意味着更长的计数周期,因此可以在一个计数周期内覆盖更大的计数范围。
计数器的实际工作频率:
计数器计数频率是指计数器在单位时间内进行计数的次数。这个频率通常以赫兹(Hz)为单位表示,即每秒的计数次数。
$$
计数器实际计数频率=\frac{输入时钟频率}{预分频值+1}
$$
输入时钟频率是提供给计数器的时钟信号的频率。
预分频值是通过配置计数器寄存器来设置的,用于减小计数器的工作频率,从而影响计数频率。增大预分频因子可以降低计数器的计数频率,反之亦然。
例如:
输入时钟频率为72MHz,16位预分频器设置最大值65535 (,取值范围0~65535),则实际计数器计数频率为
。
计数器溢出频率:
计数器溢出频率是指在计数器达到其最大计数值后重新从零开始计数的频率。
当计数器计数到达最大值,它会发生溢出并重新从零开始计数,形成一个循环。
$$
计数器溢出频率=\frac{实际计数器计数频率}{计数器的最大计数值+1}
$$
所以为计数器设定的计数时间就是:
举例:
16位计数器的最大计数值为65535+1; (2^{16}=65536 ,取值0~65535)
当STM32的基准时钟频率为72MHz时,计数器设置最慢的工作频率即预分频值为65535;设置最大计数值65535;这样会得到最大的定时时间。
$$
最大定时时间=\frac{计数器最大计数值+1}{计数器最慢计数频率} =\frac{65535+1}{\frac{72MHz}{65535+1}}=59.65s
$$
作者:牵影人