//子函数如下:
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产生的方波是一样的。
|