//子函数如下: 
Void TestSub(void) 
{ 
if(TimerCnt>3) 
        { 
        TimerCnt=0; 
        if(FLzs) 
                { 
                FPulse=FALSE; 
                TestPort_High; 
                } 
        else{ 
                FPulse=TRUE; 
                TestPort_Low; 
                } 
        } 
} 
 
//main函数如下: 
Int main(void) 
{ 
.........//初始化IO口、Timer2. 
  While(1) 
  { 
  //TestSub(); //位置A 
  } 
} 
 
//Timer2中断函数如下: 
void TIM2_IRQHandler(void) 
{ 
   if (TIM_GetITStatus(TIM2, TIM_IT_Update) != RESET) //位置B 
         { 
        TimerCnt++; 
          //TestSub(); //位置C 
          TIM_ClearITPendingBit(TIM2, TIM_IT_Update); 
         } 
} 
现在遇到的现象如下,请哪位好心人详解,非常感谢。 
如果删除“if ( TIM_GetITStatus(TIM2 , TIM_IT_Update) != RESET ) //位置B”,将“TestSub();”语句放在位置A与放在位置C产生的方波是不一样的,产生 
 
的频率前者是后者2倍。  
如果保留“if ( TIM_GetITStatus(TIM2 , TIM_IT_Update) != RESET ) //位置B”,将“TestSub();”语句放在位置A与放在位置C产生的方波是一样的。 
 |   
     
  
 |