430捕获功能需要消抖吗

2019-07-15 16:04发布

最近做了msp430定时捕获的实验,想用计算一个下降沿脉冲的时间间隔,发现能捕获到但是每来一个下降沿的时候,捕获到多个是什么原因啊,用信号发生器给了一个1s周期的方波,采集到情况是每秒采集到2个,不知道哪里有问题
#include <msp430x14x.h>
unsigned char overflow,value;
void main (void)
{
WDTCTL = WDTPW+WDTHOLD;                    //关闭看门狗定时器
P1DIR = BIT0+BIT4;                         //设置P1.0方向为输出
P1SEL = BIT2;                              //设置P1.2端口为功能模块使用
TACTL = TASSEL0+TACLR+TAIE+MC_2;            //定时器A时钟信号选择ACLK,同时设置定时器A计数模式为连续增计模式
CCTL1 = CM_2+SCS+CAP+CCIE;                  //下降沿捕获,CCI0A为捕获信号源
_EINT();                                   //中断允许
while(1);                                  //LOOP
}
#pragma vector=tiMERA1_VECTOR               //定时器A中断处理
__interrupt void timer_a(void)
{
switch(TAIV)                               //向量查询
  { case 2:                                 //捕获中断
      
        if (CCTL1&CM1)                  //下降沿
        {  
           value++
       }   
       break;
    case 10:                                //定时器溢出中断
       overflow++;
       break;                               //溢出计数加1
    default:break;
  }
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。