使用Timer1产生TAIV中断时,不知是中断无法进入,或者是进入后无法退出,以下是程序代码,在使用MC_2时功能正常,但是MC_1和MC_3就都不行,在下初学,望指教,谢谢~
#include <msp430g2553.h>
#include <intrinsics.h>
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; // 关闭看门狗定时器
// P2SEL |= BIT4+BIT2; // P2.2/4连接主外设即TA1.1/2
// P2DIR |= BIT4+BIT2; // P2.2/4输出
P1DIR |= BIT0; //P1.0输出
TA1CCR0=128; //定时周期
TA1CCTL1 = CCIE; // CCR0 CCR1中断使能
TA1CCTL2 = CCIE;
TA1CCR1=32; TA1CCR2=64;
TA1CTL = TASSEL_1 + MC_3 +TACLR; // ACLK, up-down 模式
__bis_SR_register(LPM3_bits + GIE); // 进入低功耗模式,使能全局中断
}
#pragma vector=TIMER1_A1_VECTOR
__interrupt void Timer_A1(void)
{
switch( TA1IV )
{
case 2: P1OUT |= 0x01;
break;
case 4: P1OUT &= 0xfe; break;
case 10: break;
}
}
灰小子:
MC_1是增计数,MC_2是连续增技术,MC_3是增减计数
这三种工作方式不太一样的。
建议参考430ware里的代码进行学习
user3999804:
回复 灰小子:
TI给的代码里应用CCR1和CCR2中断的都是在MC_2模式下的,我想在MC_3模式里用。今天试验的感觉是进入了CCR1中断之后就没有退出来返回主程序,不知道是怎么回事?