static void TIM4_Init(void)//定时0.001s钟中断一次
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
/* TIM5 clock enable */
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM5, ENABLE);
/* ---------------------------------------------------------------
TIM4 Configuration: Output Compare Timing Mode:
TIM2CLK = 36 MHz, Prescaler = 7200, TIM2 counter clock = 7.2 MHz
--------------------------------------------------------------- */
/* Time base configuration */
//这个就是自动装载的计数值,由于计数是从0开始的,计数10000次后为9999
TIM_TimeBaseStructure.TIM_Period = (2000 - 1);
// 这个就是预分频系数,当由于为0时表示不分频所以要减1
TIM_TimeBaseStructure.TIM_Prescaler = (72 - 1);
// 高级应用本次不涉及。定义在定时器时钟(CK_INT)频率与数字滤波器(ETR,TIx)
// 使用的采样频率之间的分频比例
TIM_TimeBaseStructure.TIM_ClockDivision = 0;
//向上计数
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
//初始化定时器5
TIM_TimeBaseInit(TIM4, &TIM_TimeBaseStructure);
/* Clear TIM5 update pending flag[清除TIM5溢出中断标志] */
TIM_ClearITPendingBit(TIM4, TIM_IT_Update);
/* TIM IT enable */ //打开溢出中断
TIM_ITConfig(TIM4, TIM_IT_Update, ENABLE);
/* TIM5 enable counter */
TIM_Cmd(TIM4, ENABLE); //计数器使能,开始工作
}
计算时间的公式公式
((1+TIM_Prescaler)/72M)*(1+TIM_Period)=T;