https://blog.csdn.net/banzhuan133/article/details/69225870?utm_source=blogxgwz3 原地址
在单片机的调试过程中,我们经常需要知道某个过程跑一遍的时长,以便更好地对时序进行控制。事实上,利用单片机自带的定时器就能很方便地实现这一功能。
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;
}
这样,在我们需要计算时长的代码片前启动计时器,在代码片结束的位置关闭计时器,输出结果或对计时结果进行判断即可。start();
{
...
}
result = end();
int time = result * 定时器时钟