STM32F103定时器奇怪的问题

[复制链接]
1337|3
 楼主| joansun 发表于 2014-4-28 18:23 | 显示全部楼层 |阅读模式
//子函数如下:
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产生的方波是一样的。
dld2 发表于 2014-4-29 13:49 | 显示全部楼层
在定义TimerCnt 时加上volatile试试
 楼主| joansun 发表于 2014-4-30 16:20 | 显示全部楼层
dld2 发表于 2014-4-29 13:49
在定义TimerCnt 时加上volatile试试

加了volatile结果也是一样的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

2

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部