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

MSP430F5529中断的问题

我用TA0的计数模块1试图输出脉冲波,现在的问题是,程序似乎进入不了中断了,是我的中断向量写错了,还是因为没有正确的开中断呢?

我觉得溢出中断应该是会产生的啊

#include <msp430.h>

/*
* main.c
*/
int i;
int main(void) {

WDTCTL = WDTPW | WDTHOLD; // Stop watchdog timer
P8DIR |=BIT1;
P8OUT&=~BIT1;
TA0CTL|=MC_1+TASSEL_2+ID_0;//定时器TA0设置为增量计数模式,SMCLK为时钟,无分频
//TA0CCR0=62914-1;
TA0CCR0=512-1;
TA0CCR1=384;
TA0CTL|=TAIE; //允许TA0溢出中断
TA0CCTL1|=CCIE; //允许比较捕获模块1的中断
_EINT();
LPM0;
while(1){
}
return 0;
}
#pragma vector=TIMER0_A0_VECTOR
__interrupt void TIMER0_A0_ISR(void){
P8OUT|=BIT1;
//delay(1000);
for(i=0;i<65535;i++){
;
}
switch(TA0IV){
case 2:
//P7OUT &=~BIT3;
//POUT|=BIT0;
break;
case 10:
//P7OUT|=BIT3;
//P1OUT|=BIT0;

break;
}
}

Lina Lian:

sfesly sfesly ,

关于你的程序,有以下几个建议:

1. 试着用__bis_SR_register(LPM0_bits + GIE);代码代替_EINT(); LPM0;试试;

2. 请问你的CCR1是用作什么功能的?是想输出脉冲吗?如果是的话,需要设置TA0CCTL1寄存器中的OUTMOD形式。

3. 关于中断,CCR0单独享有一个中断向量TIMER0_A0_VECTOR,CCR2, CCR3……,共享另一个中断向量TIMER0_A1_VECTOR,可查看user guide和头文件。

4. 在初始化Timer时,最好clear 一下TAR.

下面是相关Timer0_A5, Toggle P1.0, CCR0 Up Mode ISR, DCO SMCLK的例子,你参考一下。

#include <msp430.h>

int main(void){ WDTCTL = WDTPW + WDTHOLD; // Stop WDT P1DIR |= 0x01; // P1.0 output TA0CCTL0 = CCIE; // CCR0 interrupt enabled TA0CCR0 = 50000; TA0CTL = TASSEL_2 + MC_1 + TACLR; // SMCLK, upmode, clear TAR

__bis_SR_register(LPM0_bits + GIE); // Enter LPM0, enable interrupts __no_operation(); // For debugger}

// Timer0 A0 interrupt service routine#pragma vector=TIMER0_A0_VECTOR__interrupt void TIMER0_A0_ISR(void){ P1OUT ^= 0x01; // Toggle P1.0}

另外你可以参考一下附件中输出PWM的code example.

希望对你有帮助!O(∩_∩)O~

Lina Lian:

sfesly sfesly,

另外这个帖子是相关MSP430产品的,应该发至MSP430版块,可能会更多人回答。O(∩_∩)O~

赞(0)
未经允许不得转载:TI中文支持网 » MSP430F5529中断的问题
分享到: 更多 (0)