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

TAI中断返回问题

//用timer a中的TAIE  溢出中断实验

//但是程序进入中断服务程序后 无法返回断点继续执行后续程序  不知道什么原因啊 求好人

#include <msp430x16x.h>

void main(void)

{

 WDTCTL=WDTPW+WDTHOLD;

 P2DIR=0XFF;

 P2OUT=0Xff;

 TACTL=TASSEL_1+ID_0+MC_2+TACLR+TAIE;//增计数 模式

 while(1)

 {

 _EINT();

 P2OUT=0X00;

 }

}

#pragma vector = TIMERA1_VECTOR //ccr0中断服务

__interrupt void TIMERA(void)

{

 P2OUT=0X13;}

//程序运行到此处 就退不出中断服务程序              

//了.,一直循环怎么回事啊???弄了半天一直没懂啊

Hardy Hu:

1.初始化时TACTL中的TACLR位不用设置;

2.你的意思是退不出中断还是在main的while(1)中一直循环?

Hardy Hu:

TAIV能自动reset当前响应的IFG

you leo:

回复 Hardy Hu:

是的啊~~我要崩了

Hardy Hu:

这样操作确实是有问题,因为MCLK比ACLK快很多,所以虽然TAIFG被自动清零,但是马上又被置位了,建议你参考一下TI官方的例程。

you leo:

回复 Hardy Hu:

TAIFG不是多源中断么?怎么会自动复位??

you leo:

回复 Fiona Chen:

我改成持续模式了  但是也出现跳不出中断了

#include <msp430x16x.h>

void main(void)

{

 WDTCTL=WDTPW+WDTHOLD;

 P2DIR=0XFF;

 P2OUT=0Xff;

 TACTL=TASSEL_2+ID_0+MC_2+TACLR+TAIE+TAIFG;//

 while(1)

 {

 _EINT();

 P2OUT=0X00;

 }

}

#pragma vector = TIMERA1_VECTOR //

__interrupt void hf(void)

{

 int i;

 P2OUT=0Xff;

 for(i=10000;i>0;i–);

}

you leo:

回复 Hardy Hu:

TAIFG中断向量不是中断多源么? 怎么会自动复位??

Hardy Hu:

回复 you leo:

TAIV会把当前响应的中断标志清零,也就是说如果是多个中断同时发生了,TAIV响应当前最高优先级的并清该IFG,如果只有一个IFG就只能是这一个了。

赞(0)
未经允许不得转载:TI中文支持网 » TAI中断返回问题
分享到: 更多 (0)