在单片机的调试过程中,我们经常需要知道某个过程跑一遍的时长,以便更好地对时序进行控制。事实上,利用单片机自带的定时器就能很方便地实现这一功能。
void TIM4_Int_Init(void)
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;
NVIC_InitTypeDef NVIC_InitStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4,ENABLE);
TIM_TimeBaseInitStructure.TIM_Period = 1000000;
TIM_TimeBaseInitStructure.TIM_Prescaler=83;
TIM_TimeBaseInitStructure.TIM_CounterMode=TIM_CounterMode_Up;
TIM_TimeBaseInitStructure.TIM_ClockDivision=TIM_CKD_DIV1;
TIM_TimeBaseInit(TIM4,&TIM_TimeBaseInitStructure);
}
void Clock_Start(){
TIM4->CNT=0x00;
TIM_Cmd(TIM4,ENABLE);
}
u32 Clock_End(){
u32 result;
result = TIM4->CNT;
TIM_Cmd(TIM4,DISABLE);
return result;
}
这样,在我们需要计算时长的代码片前启动计时器,在代码片结束的位置关闭计时器,输出结果或对计时结果进行判断即可。