TI中文支持网
TI专业的中文技术问题搜集分享网站

[MSP430] 定时器B的中断问题

#include <msp430x44x.h>
int y;
void main( void )
{
  // Stop watchdog timer to prevent time out reset
  WDTCTL = WDTPW + WDTHOLD;
  TACTL=TASSEL1+TACLR+TAIE;//TBCTL=TBSSEL1+TBCLR+TBIE;
  TACCR0=100;//TBCCR0=100;
  TACTL|=MC0;//TBCTL|=MC0;
  _EINT();
  while(1);
  
}
#pragma vector=TIMERA1_VECTOR//#pragma vector=TIMERB1_VECTOR
__interrupt void w(void)
{
  y=TAIV;//  y=TBIV;
}
这段程序在IAR Embedded Workbench环境中软件仿真是可以进入中断的,但是仿此,将定时器A改为定时器B,即将上述程序中具有双斜杠的的语句,用双斜杠后面的语句代替前面的指令。仿真根本不进入中断。这是什么原因呢?

user3587240:

那里应该不是TACTL=TASSEL1+TACLR+TAIE,,应该是 TACTL=TASSEL1+TACLR;  TACCTL0 = CCIE;因为你TACCR0 = 100 此时触发方式是TACCR0 CC IFG 触发,而TAIE 是记满到0FFFFh 触发,TAIFG 触发的。所以你把 TACTL=TASSEL1+TACLR + TAIE;这句换成TACTL=TASSEL1+TACLR;  TACCTL0 = CCIE;这2句再试一下,

仅供参考

Lina Lian:

tianm 21ic,

MSP430Ware中有专门针对Timer_B的code example. 你可以试试附件中的例子。

Lina Lian:

tianm 21ic,

另外,你本身关于Timer-A的代码是想实现什么功能啊? 

赞(0)
未经允许不得转载:TI中文支持网 » [MSP430] 定时器B的中断问题
分享到: 更多 (0)