cumtgao 发表于 2011-2-22 09:24:53

关于TI官方例程的几点困惑,求解答。

下面是TI的官方例程   利用定时器 A定时中断
#include<msp430x14x.h>

void main(void)
{
WDTCTL = WDTPW + WDTHOLD;               // Stop WDT
P1DIR |= 0x01;                            // P1.0 output
CCTL0 = CCIE;                           // CCR0 interrupt enabled   这个中断使能和TACTL中的中断使能TAIE的区别和联系?
CCR0 = 50000;
TACTL = TASSEL_2 + MC_2;                  // SMCLK, contmode

_BIS_SR(LPM0_bits + GIE);               // Enter LPM0 w/ interrupt   这句用LPM0; _EINT();两条指令代替为什么不可以?
}

// Timer A0 interrupt service routine
#pragma vector=TIMERA0_VECTOR
__interrupt void Timer_A (void)
{
P1OUT ^= 0x01;                            // Toggle P1.0
CCR0 += 50000;                            // Add Offset to CCR0
}

cumtgao 发表于 2011-2-22 09:30:45

刚才又试了下,在TACTL = TASSEL_1 + MC_1 模式下 下面那条_BIS_SR(LPM0_bits + GIE);是可以用 _EINT(); LPM0;代替的。

cumtgao 发表于 2011-2-22 09:38:04

#include<msp430x14x.h>

void main(void)
{
WDTCTL = WDTPW + WDTHOLD;               // Stop WDT
P5DIR |= 0x01;                            // P1.0 output
CCTL0 = CCIE;                           // CCR0 interrupt enabled
CCR0 = 50000;
TACTL = TASSEL_2 + MC_2 + TAIE;                  // SMCLK, contmode
_EINT();
LPM0;

//_BIS_SR(LPM0_bits + GIE);               // Enter LPM0 w/ interrupt
}

// Timer A0 interrupt service routine
#pragma vector=TIMERA0_VECTOR
__interrupt void Timer_A (void)
{
P5OUT ^= 0x01;                            // Toggle P1.0
CCR0 += 50000;                            // Add Offset to CCR0
}

多试了几条程序,这样改就可以了,其实CCR0不知在这个程序里有什么作用上面用到的是0XFFFF模式 所以TAIE开就可。

guisi 发表于 2011-5-20 11:08:44

在头文件里面有,请查下!
页: [1]
查看完整版本: 关于TI官方例程的几点困惑,求解答。