TI中文支持网
TI专业的中文技术问题搜集分享网站

麻烦看下MSP430F5529测频的程序问题在哪?第一个中断进不去。

#include <msp430f5529.h>
#include "nokia_5110.h"
//#include "systemclk.h"
unsigned int new_flag=0,old_flag=0;
unsigned char N1=0;
long time,pluse=0;

void main(void)
{
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
P1DIR |= 0x01; // P1.0 output
P1DIR &=~BIT2; //TA0输入捕捉端口(P1.2) P1SEL |= BIT2; // setclock(8);
TA0CTL = TASSEL_2 + MC_2 + TACLR + TAIE; // ACLK~1MHz, contmode, clear TAR
// enable interrupt
TA0CCTL0 = CM_1+CCIS_0+CAP+SCS+CCIE;
LCD_init();
LCD_ShowFloat(0,1,1000000*pluse/time,1);
__bis_SR_register(LPM3_bits + GIE); // Enter LPM3, enable interrupts
__no_operation(); // For debugger
}

#pragma vector=TIMER0_A0_VECTOR
__interrupt void TIMER0_A0_ISR(void)
{ if(N1==0)
{ N1++;
old_flag = TA0CCR0;}
else
{ N1++;
new_flag = TA0CCR0;}
}
// Timer0_A5 Interrupt Vector (TAIV) handler
#pragma vector=TIMER0_A1_VECTOR
__interrupt void TIMER0_A1_ISR(void)
{
switch(__even_in_range(TA0IV,14))
{
case 0: break; // No interrupt case 2: break; // CCR1 not used case 4: break; // CCR2 not used
case 6: break; // reserved
case 8: break; // reserved
case 10: break; // reserved
case 12: break; // reserved
case 14: if(N1==0)
{ pluse=0;}
else { pluse=N1-1;}
time=new_flag-old_flag;
N1=0;
P1OUT ^= 0x01; // overflow
break;
default: break; }}

灰小子:

应该是没使能总中断。没看到 _EINT();或_BIS_SR(GIE);

Fu Hao:

回复 灰小子:

__bis_SR_register(LPM3_bits + GIE); // Enter LPM3, enable interrupts

这个难道不是开总中断,进入低功耗模式吗?

灰小子:

回复 Fu Hao:

汗,是我读代码不仔细。

这句是使能总中断

赞(0)
未经允许不得转载:TI中文支持网 » 麻烦看下MSP430F5529测频的程序问题在哪?第一个中断进不去。
分享到: 更多 (0)