打印

STM32F103定时器奇怪的问题

[复制链接]
1111|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

粉丝