int main( void )
{
WDTCTL = WDTPW +WDTHOLD;
BCSCTL1 = CALBC1_1MHZ;
DCOCTL = CALDCO_1MHZ;
P1REN|=BIT1;
P1DIR|=BIT1;
//中断设置,估计这里有问题,TimerB有两个中断向量,如何设置才能进入TimerB的第二个中断向量呢?
BCSCTL2 = DIVS0; //SMCLK除2
TB0CCR1 =62395;//常温接近1秒
TB0CTL=TBSSEL1+MC0+ TBCLR+ID0+ID1; //用DCO时钟,Up mode,时钟除8
TBCCTL1 |=CCIE; //开启CCR1中断
_EINT(); //使能中断,开始工作......
while(1)
{
OneSecondDo();
_BIS_SR(LPM1_bits+GIE);//进入LPM1
}
return 0;
}
#pragma vector = TIMERB1_VECTOR
__interrupt void Timer_B1_ISR(void) //TimerB的第二个中断向量,以前都是用TIMERB0_VECTOR用TB0CCR0没有问题的,
{ //现在想试试如何才能进入第二个中断向量
__bic_SR_register_on_exit(LPM1_bits); //唤醒MCU
}
void OneSecondDo()
{
P1OUT=(~P1OUT);
} 本帖最后由 helloxieyu 于 2015-4-10 10:01 编辑
看MSP430F2274的手册才发现有TimerA及TimerB两个定时器,而且每个定时器都有两个中断向量,即一共有有4个中断向量,大家用的时候默认都习惯进入每个定时器的第一个中断向量,很少看到有利用到第二个中断向量的,那么,如何设置才能利用第二个中断向量呢?我的代码就那么几句,也不复杂啊,大大们能看出哪里出错吗?两天了,一直没能试验成功啊!