MSP430F5系列,配置定时器TA,我想用做独立时间间隔,及可以独立启停的定时器。
在配置时,只使用了CCR0,每秒一次执行,运行正常:
TA0CCTL0 = CCIE;
TA0CCR0 += 32768;
TA0CTL |=TACLR+TAIE;
TA0CTL |= TASSEL_1 + MC_2; // ACLK
// 中断中再执行 TA0CCR0 += 32768;
在某个时间,需要开启一个定时器,比如闪一个灯,然后我定义CCR1:
GREEN_ON;
TA0CCTL1 = CCIE;
TA0CCR1 += 10000; // 约0.3秒
在中断中:
#pragma vector = TIMER0_A1_VECTOR
__interrupt void Timer_A(void)
{
switch (__even_in_range(TA0IV,14))
{
case 2:
TA0CCTL1 &= ~CCIE;
GREEN_OFF;
break;
case 4:
case 6:
case 8:
case 10:
case 12:
case 14:
break;
}
}
我的想法是,在需要闪灯时,开灯并打开一个定时器,定时器中断关灯,但实际上这个运行是错误的,查找资料后也没有找到问题出在哪里。
在连续模式下,是不是定时器不能独立启停?还是我在停止后设置的CCR1存在问题?
谢谢。