問題:定時器捕獲進入不了中斷,希望大手子們幫我看看配置哪里出錯了
芯片: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);
}
}
}
|