方案分析
方案一:使用硬件定时器TIMx。
void vConfigureTimerForRunTimeStats(void)
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
// 时钟使能
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);
//定时器TIMx初始化
TIM_TimeBaseStructure.TIM_Prescaler = SystemCoreClock / 1000000 - 1; //预分频后为1MHz
TIM_TimeBaseStructure.TIM_Period = configTICK_RATE_HZ * 10 - 1;
TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInit(TIMER_FOR_RUN_TIME_STAT, &TIM_TimeBaseStructure);
TIM_Cmd(TIM3, ENABLE);
}
unsigned long ulGetRunTimeCounterValue(void)
{
return TIM_GetCounter(TIM3);
}
|