STM32
直播中

李明烨

7年用户 201经验值
私信 关注
[问答]

如何实现一个脉冲宽度测量?

原子哥,我在做定时器捕获的时候想实现一个脉冲宽度测量写了如下代码
void tiM2_IRQHandler(void)
{  
  if(a++)   
  {   
     a = 1;            
     IC2Value1 = TIM2->CCR1;//读取CCR1也可以清CC1IF标志位
     TIM2->CCER|=1<<1;
     printf("IC2Value1 = %drn",IC2Value1);
  }
  if(a)
  {
   a=0;
  IC2Value2 = TIM2->CCR1;//读取CCR1也可以清CC1IF标志位
  TIM2->CCER|=0<<1;
printf("IC2Value2 = %drn",IC2Value2);
    }                     
TIM2->SR&=~(1<<1);//清除中断标志位      
}
但是实际测得IC2Value1,IC2Value2输出的值是一样的??????

回帖(4)

王希予

2020-6-5 06:29:09
当然是一样的了.
自己分析代码.
举报

李志强

2020-6-5 06:42:19
IC2Value2 = TIM2->CCR1;
是这句有问题吗?那我要是想在第一次进中断的时候吧TIM2->CCR1里面的是清除掉该怎么写呢?
举报

卜臻敏

2020-6-5 06:47:28
TIM2->CCR1=0;
举报

李琳

2020-6-5 07:00:21
搞定了,谢谢!!!
举报

更多回帖

发帖
×
20
完善资料,
赚取积分