msp430里面一般会有两个Timer,每个Timer会有两个中断源
一般一个中断是给CCR0计数器中断用的,独用
还有一个中断是给CCR1-CCRx计数器和溢出中断用的,他们公用一个中断源,所以这个中断每次中断的时候需要去读一个专门的Timer中断向量表,如TAIV类似的寄存器,判断到底是哪个中断。
注意:TAIV这种寄存器是不会自动清除的,所以一定要去软件读它清除,要不然有问题哦
IAR中有个包装函数__even_in_range,使用大概如下:
switch (__even_in_range(TA1IV, 4))
{
case TA1IV_TACCR1:
if ((TA1CCR1&0x0020) == 0) {
TA1CCR1 += 0x0020;
CLRBIT(LED_P, LED_B);
} else {
TA1CCR1 += 0x2FE0;
SETBIT(LED_P, LED_B);
}
break;
}
阅读(1420) | 评论(0) | 转发(0) |