|
发表于 2011-4-15 09:18:21
|
显示全部楼层
回复【2楼】cike
-----------------------------------------------------------------------
MSP430只有CCR0的中断(它的优先级最高)可以自动清除,TAR计数溢出的中断需要手动或者访问TAIV时可以被清除。
你用下面程序试试,F2013的(手头没有F42x),定时100us左右。
#include <msp430x20x3.h>
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
P1DIR |= 0x01; // P1.0 output
TACTL = TASSEL_2 + MC_2 + TAIE; // SMCLK, contmode, interrupt
TAR=65536-100;
_BIS_SR(LPM0_bits + GIE); // Enter LPM0 w/ interrupt
}
// Timer_A3 Interrupt Vector (TAIV) handler
#pragma vector=TIMERA1_VECTOR
__interrupt void Timer_A(void)
{
TAR=65536-100;
switch( TAIV )
{
case 2: break; // CCR1 not used
case 4: break; // CCR2 not used
case 10: P1OUT ^= 0x01;// overflow
break;
}
} |
|