登录|立即注册|使用QQ帐号登录
论坛 > 24小时必答区
发帖|
看1229|回0|收藏
楼主 ID:813180 只看他
2020-9-22 18:37
问题:定时器捕获进入不了中断,希望大手子们帮我看看配置哪里出错了


芯片:MSP430F169
引脚P2.4
代码:

#include "msp430x16x.h"
#include "timerA.h"
#include "delay.h"




void timerA_init(void)
{
//P2.4捕获低电平
  TACTL   = TASSEL_2+MC_2+TAIE+TACLR+ ID_1;//SMCLK,连续计数,中断允许,计数器清零 8分频1MZH
  TACCTL2 = CAP+CM_2+CCIS_0+SCS+CCIE;//开捕获模式,下降沿捕获,CCI1A输入,同步捕获,中断允许
}




#pragma vector=TIMERA1_VECTOR  //捕获中断向量
__interrupt void Timer_A(void)
{
  switch(TAIV)    //2为TA1捕获向量地址4为TA2捕获向量地址
  {
    case 0X02 :
      P4OUT |=BIT4;
      delay_ms(200);
      P4OUT &=~BIT4;
      break;  
   
    case 0X04 :
      P4OUT |=BIT4;
      delay_ms(200);
      P4OUT &=~BIT4;
      break;  
  }
}



#include "msp430x16x.h"
#include "gpio.h"


void GPIO_init(void)
{
  P4DIR =0X3c;          //P4.2 P4.4触发信号
  P4SEL |=  BIT3+BIT5;          //P4.3 P4.5 接受反馈信号
  
  P2DIR &= ~BIT4;
  P2SEL |= BIT4;
  
  P6DIR |= BIT4;          //P6.4反馈信号指示灯                     
}


#include "System_clock.h"
#include<msp430x16x.h>


void System_clock(void)
{
  unsigned int iq0;
  BCSCTL1&=~XT2OFF;
  do
  {
    IFG1&=~OFIFG;
    for(iq0=0xff;iq0>0;iq0--);
  }
  while((IFG1&OFIFG)!=0);
  BCSCTL2=0x88;
}




#include "msp430x16x.h"
#include "System_clock.h"
#include "GPIO.h"
//#include "timerb.h"
#include "timerA.h"
#include "delay.h"


unsigned int i;


void main( void )
{
  // Stop watchdog timer to prevent time out reset
  WDTCTL = WDTPW + WDTHOLD;
  System_clock();  
  GPIO_init();
//  timerb_init();
  timerA_init();
  _EINT();
  P4OUT &= ~BIT2;
  P4OUT &= ~BIT4;
  P6OUT |= BIT4;
  delay_ms(2000);
  while(1)
  {
    i++;
    P4OUT |= BIT2;
    P6OUT &= ~BIT4;
    delay_ms(100);
    P4OUT &= ~BIT2;
    P6OUT |= BIT4;
    delay_ms(1100);
    if(i==1500)
    {
      while(1);
    }
  }
}







51黑电子论坛

Powered by Discuz! X3.1

首页|标准版|触屏版|电脑版