关于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
} 刚才又试了下,在TACTL = TASSEL_1 + MC_1 模式下 下面那条_BIS_SR(LPM0_bits + GIE);是可以用 _EINT(); LPM0;代替的。 #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开就可。 在头文件里面有,请查下!
页:
[1]