有谁用过MSP430f149的TA的CCIxB吗

2019-08-08 22:29发布

/***************************(定时器A)频率捕获************************/
void TA_Capture(void)
{
   TACTL=TACLR+TASSEL_2+ID_3;           //TAR清除,捕获时钟选择SMCLK,8分频(选择8Mhz/8=1Mhz)
   TACTL|=TAIE;                         //此处打开定时器溢出中断
   
  TACCTL1=CM_1+CAP+SCS+CCIS_1;         //CCTL1,上升沿捕获,捕获模式,同步捕获,捕获端口选取CCI1B
   TACCTL1|=CCIE;                       //使能捕获中断
  
   TACCR0=10000-1;                      //定时器溢出值
   
   P2DIR&=~BIT3;                        //将P2.3设定为输入
   P2SEL|=BIT3;                         //将P2.3设定为频率捕获端口
   TACTL|=MC_1;                         //增计数模式
}

/*************************定时器A中断函数*************************/
#pragma vector = TIMERA1_VECTOR          //捕获中断
__interrupt void TIMERA1(void)
{
  switch(TAIV)                           //读中断向量寄存器
  {
    case 2: switch(cap_count)          //捕获瞬间,读取TAR的值
             {
                case 0: T_cap1=TACCR1;
                        cap_count=1;
                        overflow_count=0;
                        break;           //记录捕获值              
                case 1: T_cap2=TACCR1;
                        cap_count=0;
                        intermediate_overflow_count=overflow_count;
                        break;
             }  
            break;
    case  4:  break;      
    case 10:  overflow_count+=1;          //用于计算捕获时候的溢出脉冲
              spacing_count+=1;           //用于检测MODBUS协议中任意两帧数据的间隔
              if(spacing_count>2)                        
              {
               spacing_count=2;
               rec_ok=flag_2;             //flag_2用来确定,没收到一帧数据仅回答一次
              }
              break;
    default: break;      
  }
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
1条回答
zgsxhzac
2019-08-09 03:16
上面是我的程序,目的是捕获P2.3口的方波脉宽,但是运行结果是仅响应溢出中断,不响应捕获中断,这是为什么呢?有哪位高手能解释一下吗?有谁用过MSP430f149的TA的CCIxB吗?能发段程序看看吗?

一周热门 更多>