stm32 定时器计算公式
时间: 2023-10-18 10:05:47 浏览: 111
在STM32中,定时器计算公式通常可以表示为以下形式:
Tout = (TIM_Period + 1) * (TIM_Prescaler + 1) / Tclk
其中,Tout是定时器溢出时间(单位为us),TIM_Period是定时器的装载周期,TIM_Prescaler是定时器的预分频值,Tclk是定时器的输入时钟频率(单位为MHz)。
具体来说,定时器的输入时钟频率Tclk是定时器的运行频率,当预分频值TIM_Prescaler为psc时,时钟频率被分频了psc + 1。因此,定时器的最终频率为Tclk / (TIM_Prescaler + 1)。每次定时器计数器加1所需要的时间为1 / (Tclk / (TIM_Prescaler + 1)),即(TIM_Prescaler + 1) / Tclk。
当定时器的装载值设置为TIM_Period时,定时器从0计数到TIM_Period时会清零。因此,定时时间可以通过公式Tout = (TIM_Period + 1) * (TIM_Prescaler + 1) / Tclk计算得出,单位为us。
举个例子来说明,假设Tclk = 72MHz,TIM_Prescaler = 71。时钟周期为1us。如果TIM_Period的值为多少,定时器周期就为多少毫秒。具体计算公式为:
定时时间 = (TIM_Period + 1) * (TIM_Prescaler + 1) / Tclk
定时时间 = (TIM_Period + 1) * (71 + 1) / 72
定时时间 = (TIM_Period + 1) * 72 / 72
定时时间 = TIM_Period + 1
因此,如果TIM_Period的值为4999,则定时器周期为5000毫秒,即Tout = 5000ms。
总结起来,STM32中的定时器计算公式为Tout = (TIM_Period + 1) * (TIM_Prescaler + 1) / Tclk,其中Tout是定时器溢出时间(单位为us),TIM_Period是定时器的装载周期,TIM_Prescaler是定时器的预分频值,Tclk是定时器的输入时钟频率(单位为MHz)。