msp430 Timer a程序无法进入中断

#include <msp430x14x.h>
void main(void)
{
WDTCTL = WDTPW + WDTHOLD;
P2DIR |= BIT0;
P2OUT |= BIT0;

TACCTL0=CCIE;
TACCR0=16384;
TACTL=TASSEL_1+MC_1+TACLR;
_EINT();
while(1);
}
#pragma vector=TIMERA0_VECTOR
__interrupt void Timer_A (void)
{
P2OUT ^=BIT0;
}

给你个例子

void TimerA0Init(void)
{
TA0CCR0 = 16384;

TA0CTL = TASSEL_1 + MC_1 + TACLR; // ACLK, upmode, clear TAR
TA0CCTL0 = CCIE; // CCR0 interrupt enabled
}

void main(void)
{

WDTCTL = WDTPW + WDTHOLD;

P2DIR |= BIT0;
P2OUT |= BIT0;

TimerA0Init();

_EINT();
while(1);

}

#pragma vector = TIMER0_A0_VECTOR
__interrupt void TIMER0_A0_ISR(void)
{

P2OUT ^=BIT0;

}

如果这样都不行,请查看时钟配置,ACLK = ?追问

我换硬件调试时就能进中断了,软件调试在中断函数中设置断点,始终执行不到断点处

温馨提示:内容为网友见解,仅供参考
无其他回答

MSP430 这个程序为什么不能进入中断 ,QQ370704851
程序没错,应是可以进中断,你可能用的IAR软件仿真。IAR软件仿真,若要用定时A中断,需设置simulator\\interrupt setup...,添加定时A中断。

关于MSP430单片机 定时器A, timerA 的问题.
1、如果是“增计数模式”,那么TAR可以增计数到CCR0的值,然后复位为0,再开始新一轮的计数,在此期间一旦有CCR1\/2\/3\/4\/5\/6之一与之相同,则产生中断并进入中断处理程序,所以不论CCR1\/2\/3\/4\/5\/6的值设为多少,周期始终都由CCR0决定,只不过先后顺序有差别。2、如果是“连续计数模式”,同...

用IAR 编译msp430 单片机,中断一直无法通过怎么回事
并且对于芯片msp430g2553来说,io430.h中包含io430g2553.h文件

MSP430怎么关闭Timer_a
在TACTL, Timer_A Control Register中设置就好了

msp430编程定时器B的中断
这是因为430在响应中断程序的时候,总中断GIE是复位状态的,如果要产生类似51的中断嵌套,只能在中断函数内再次置位GIE位。2.定时器TA TimerA有2个中断向量。TIMERA0,TIMERA1 TIMERA0只针对CCR0的计数溢出 TIMERA1再查询TAIV后可知道是CCR1,还是CCR2,亦或TAIFG引起的,至于TAIFG是什么情况下置位的,...

msp430g2553的Timer_A 定时器问题:
ccro溢出变为零 零+12000相当于给初值赋初值12000

MSP430的CCRx中断在连续计数模式下怎么产生中断的
首先是对它们付初值,在计数达到CCRX中的其中一个的数字时,产生中断,。然后根据TAIV的值作出你想做的事情。接着继续主函数,当达到第二个CCRX值时,才产生中断,重复以上动作。例如:CCR0=200;CCR1=500;CCR2=2000;当计数到200时,中断产生,进入到值为TIMERA0_VECTOR的中断,执行中断中的程序。

在msp430中每次开中断之前都需要写#pragma vector=TIMERA0_VECTOR 吗...
TIMERA0_VECTOR 只是针对TimerA0的中断,它是对应于TimerA0的中断向量。如果是其他外设所引发的中断,这句话写法会不同,例如#pragma vector=UART0RX_VECTOR是写针对串口的中断。中断的写法是这样的:pragma vector = 中断向量(可在头文件中进行查找)__interrupt void ISR(void){ 中断服务程序 } ...

msp430如何让定时器计数器重新开始计数。使它重复不断的产生中断
1、你的GIE没开,也许压根没产生过中断。2、也许你开GIE了。TI_CC_LED1在异或下能亮,说明你的LED1的控制位应该是0吧?既下拉点亮LED1,但你要知道0^0永远都是0,你的LED1永远也都是亮着的。3、你打算LED2闪烁,可你用或语句它只能保持一个状态(恰恰这个状态是1吧?LED2就这么灭着不亮)...

下面程序中MSP430F149是如何一直保持在低功耗模式的
系统开启中断服务,外设都处于关闭状态,只有timer维持看门狗运行,timer溢出触发中断,中断服务中重置了timer,整个系统绝大多数时间只有一个定时器在运行,所以低功耗。

相似回答