msp430g2553TACCTL0无法进入中断

2019-03-24 12:35发布

使用launchpad捕获外部脉冲;TACTL做定时时钟,TACCTL0捕获脉冲;但捕获中断始终进不去,外部脉冲由信号发生器提供1K的信号,下面是程序,大家帮我参考下:
#include <MSP430G2553.H>

unsigned  int Cap_Tar;
unsigned  int Cap_First;
unsigned  int Cap_Last;
unsigned  int time;
unsigned  int pulse;
unsigned  int F;
char  flag=0;
int main( void )
{
  WDTCTL = WDTPW + WDTHOLD;                 // 停止看门狗
  P1DIR |=  0X41;
  
  P1DIR &=  ~BIT1;                          //设置P1.1为输入
  P1SEL |=  BIT1;                           //P1.1给外设TA0使用
  //P1REN |=  BIT1;
  
  TACTL = TASSEL_1 + MC_2 + TAIE;           // 时钟源选择 ACLK,计数模式选择连续计数模式,主计数器计满中断允许
  
  TACCTL0 = CM_1  + SCS + CCIS_0  + CAP + CCIE;
  //上升沿捕获+CCI0A(P1.1)+捕获模式+中断使能
  
  while(1)
  {
    _BIS_SR(LPM3_bits + GIE);                 // 进入低功耗模式3,打开全局中断
    if(flag==1)
      {
        P1OUT ^=  0X40;
        flag=0;
      }
  }
}
// Timer A0 interrupt service routine
#pragma vector=TIMER0_A0_VECTOR
__interrupt void Timer_A0 (void)
{
  if(Cap_Tar==0)
  {
    Cap_First = TACCR0; //捕获时间阀值内第一个上升沿的TAR
    Cap_Tar++;
    flag=1;
  }
  else
  {
    Cap_Last  = TACCR0;   
    Cap_Tar++;
    flag=1;
  }
}

// Timer_A2 Interrupt Vector (TA0IV) handler
#pragma vector=TIMER0_A1_VECTOR
__interrupt void Timer_A1(void)
{
  switch( TA0IV )
  {
  case  2:break;
  case 10:
    {
      if(Cap_Tar==0)
      {
        pulse=0;                              //脉冲数为0
        
      }
      else
      {
        pulse = Cap_Tar - 1;                  //计算脉冲数
        time  = Cap_Last  - Cap_First;        //计算脉冲周期
        Cap_Tar = 0;                          //清零
        Cap_Last= 0;
        Cap_First=0;
      }
      LPM3_EXIT;
    }
    //P1OUT ^= 0x41;                   // 主计数器计满溢出
           break;
}
} 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
16条回答
断桥
1楼-- · 2019-03-25 09:50
官方没有关于捕获的例程,所以也没有比较正规的参考程序。
wangfuchong
2楼-- · 2019-03-25 13:37
原帖由 断桥 于 2013-5-16 10:06 发表
我用P1.0来测试是否进入中断,官方例程中并没有捕获的相关程序,就参考了一些其他的程序,但是依旧没有什么效果,谁帮我看看,是程序问题,还是其他的问题?谢谢啦
p1.0是时钟信号输入端不是不捕捉信号输入复用端口吧?是否是p1.1?
wangfuchong
3楼-- · 2019-03-25 17:17
 精彩回答 2  元偷偷看……
wangfuchong
4楼-- · 2019-03-25 21:06
ACLK可以通过p1.0脚直接测呀
ACLK时钟源没有配置到底频率是多少?晶体还是能够自动切换到VLO?
断桥
5楼-- · 2019-03-25 23:57
P1.1是捕获信号输入端,P1.0是一个状态灯,进入中断后点亮的。  光标那个是很方便,试过的,进不去
断桥
6楼-- · 2019-03-26 00:55
 精彩回答 2  元偷偷看……

一周热门 更多>

相关问题

    相关文章