问题:定时器捕获进入不了中断,希望大手子们帮我看看配置哪里出错了
芯片: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);
}
}
}