msp430G2553的定时器捕获中断进不去,求高手指点,

2025-03-05 12:15:01
推荐回答(2个)
回答1:

我这里就有一个捕获的程序,你看看。如果你的设置没问题的话就应该是没有进行初始化。
#include
#define BHSEL P2SEL //定义捕获端口
#define BH_IO BIT2
void InitSys()
{
unsigned int iq0;
//使用XT2振荡器
BCSCTL1&=~XT2OFF; //打开XT2振荡器
do
{
IFG1 &= ~OFIFG;// 清除振荡器失效标志
for (iq0 = 0xFF; iq0 > 0; iq0--);// 延时,等待XT2起振
}while ((IFG1 & OFIFG) != 0);// 判断XT2是否起振
BCSCTL2 =SELM_2+SELS;//选择MCLK、SMCLK为XT2
_EINT();//打开全局中断控制,若不需要打开,可以屏蔽本句
}
void InitBhTimerA() //初始化
{
TACTL = TASSEL_2+ID_3+TACLR;//定时器A,时钟源:ACLK,连续计数模式
CCTL0 = CCIS_1+CM_2+CAP;//选择上降沿捕获,CCIB(P2.2)为信号源,
BHSEL |= BH_IO; //选择P2.2使用第二功能
TACTL |= MC_2+TACLR;//打开计数器
CCTL0 |= CCIE; //捕获中断允许
InitSys();
}
void main(void)
{
// Stop watchdog timer to prevent time out reset
WDTCTL = WDTPW + WDTHOLD;
InitBhTimerA();
while(1)
{
}
}
#pragma vector=TIMERA0_VECTOR
__interrupt void TimerA0()
{
_EINT();
}

回答2:

你好 中断第一句错了 应该是 #pragma vector=TIMER0_A1_VECTOR
祝好