新手上路 
 
	- 积分
 - 31
 
        - 金钱
 - 31 
 
       - 注册时间
 - 2020-11-14
 
      - 在线时间
 - 13 小时
 
 
 
 | 
 
 
求助各位前辈。 
 
程序中fre设为10,即STM32F407定时器TIM5每100ms进入一次中断,并在中断内将Count1加一,Count1累计到10时(1秒)将Count2加1。 
问题是Count2每加1的时间间隔有时不为1s。 
请问是哪里出了问题呢? 
 
提前感谢解惑! 
 
void TIM5_Init(u8 fre) 
{ 
        TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; 
 
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM5, ENABLE); 
         
        TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; 
        TIM_TimeBaseStructure.TIM_Period = 84000000/84/fre - 1; 
        TIM_TimeBaseStructure.TIM_Prescaler = 84 - 1; 
        TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; 
        TIM_TimeBaseInit(TIM5,&TIM_TimeBaseStructure); 
         
        TIM_ITConfig(TIM5,TIM_IT_Update,DISABLE); 
        TIM_ClearFlag(TIM5,TIM_FLAG_Update); 
         
        TIM_Cmd(TIM5,DISABLE); 
 
} 
void TIM5_Enable(void) 
{ 
        Count1 = 0; 
        Count2 = 0; 
        TIM_ITConfig(TIM5, TIM_IT_Update, ENABLE); 
        TIM_Cmd(TIM5,ENABLE);         
} 
 
void TIM5_IRQHandler(void) 
{ 
        if(TIM_GetITStatus(TIM5,TIM_IT_Update) == SET) 
        { 
                Count1++; 
                if(Count1 == 10) 
                { 
                        Count1 = 0;         
                        Count2++; 
                } 
                TIM_ClearFlag(TIM5,TIM_FLAG_Update); 
        } 
} 
 
 
 |   
 
 
 
 |