OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5754|回复: 1

我编写了一个tm5定时器输入捕获,中断是进去了,可是输出不了,

[复制链接]

85

主题

169

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
413
金钱
413
注册时间
2015-2-1
在线时间
1 小时
发表于 2015-11-6 20:32:43 | 显示全部楼层 |阅读模式
5金钱
请问一下,我编写了一个tm5定时器输入捕获,中断是进去了,可是输出不了,单步调试的时候赋值不对     Time = IC3ReadValue2 - IC3ReadValue1; IC3ReadValue1 = TIM_GetCapture1(TIM5);简单的赋值左右数值都不一样,右边经常等于0.请问是什么原因呢代码如下,printf输出f=0
void TIM5_IRQHandler (void) 
{CaptureNumber =0;
   if(TIM_GetITStatus(TIM5, TIM_IT_CC1) == SET)
  {
     /* Clear TIM3 Capture compare interrupt pending bit */
     TIM_ClearITPendingBit(TIM5, TIM_IT_CC1);
     if(CaptureNumber == 0)
     {
       /* Get the Input Capture value */
       IC3ReadValue1 = TIM_GetCapture1(TIM5);
       CaptureNumber = 1;
     }
     else if(CaptureNumber == 1)
      //处理第二次捕获
       {
         if(TIM_GetFlagStatus(TIM5,TIM_FLAG_Update) != SET)//两次捕获间没有发生溢出的处理
         {
         IC3=3;
           IC3ReadValue2= TIM_GetCapture1(TIM5);
           Time = IC3ReadValue2 - IC3ReadValue1;
         }
         else
         {
           TIM_ClearFlag(TIM5,TIM_FLAG_Update);   //产生了更新事件
           Time = 0xFFFFFFFF - IC3ReadValue1 + TIM_GetCapture1(TIM5)+1;  //如果有更新事件产生时候的计算方式
         }
         CaptureNumber = 0;
         if(Time!=0)
         {
           freq= 500000/Time;
        //计算频率
         }
         freq = freq;  //避免变量freq被编译器优化掉 
      
 }
       }   printf(" f = %4.5fV \r\n", freq);
//           TIM_Cmd(TIM5,DISABLE ); 
    }

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2015-11-8 22:58:11 | 显示全部楼层
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-25 15:25

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表