这是例程稍微改了一下,无法进入中断,我不是很明白TAR也会用在CCR1进行计数么还是只能用在CCR0计数中?那TIMERA1什么时候可以进入中断呢,datasheet中说的定时器溢出(TAIFG)情况下可以,这是跟TIMER0一样当TAR计数到CCR0就触发么?
int main(void)
{
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
P1DIR |= 0x01; // P1.0 output
CCTL1 = CCIE; // CCR1 interrupt enabled
CCR1 = 50000;
TACTL = TASSEL_2 + MC_2; // SMCLK, Contmode
_EINT(); //开中断
while(1)
{
}
}
// Timer_A3 Interrupt Vector (TAIV) handler
#pragma vector=TIMERA1_VECTOR
__interrupt void Timer_A(void)
{
switch( TAIV )
{
case 2: // CCR1
{
P1OUT ^= 0x01; // Toggle P1.0
CCR1 += 50000; // Add Offset to CCR1
}
break;
case 4: break; // CCR2 not used
case 10: break; // overflow not used
}
}
此帖出自
小平头技术问答
不是这个原因,这是连续计数模式,会依次循环的,相同的代码换成TIMER0就可以,用TIMER1就不行,真是不知道为啥?
一周热门 更多>