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;