MSP430F5529设置TA1定时中断,每次走到打开中断总使能就会出错

2019-03-24 09:24发布

主要程序如下,想做个对每生成一个PWM波就计数的中断,单步调试的时候每次走到中断总使能的时候就会进入ISR_TRAP.ASM文件,然后就定在这里不再跑下去
int main(void) {

    WDTCTL = WDTPW | WDTHOLD;
    WDT_init();
    UCS_init();

    P2SEL |= BIT0;
    TA1_PWM_Init('S',1,'F',0);
    TA1_PWM_SetPeriod(Period2);
    TA1_PWM_SetPermill(1,Bright2);

    __bis_SR_register(GIE);
    __no_operation();

    TA1CTL &=~TAIFG;
    TA1CTL |=TAIE;
        }
  while(1);
}


#pragma vector = TIMER1_A1_VECTOR
__interrupt void Timer1_A1(void)
{
        switch(__even_in_range(TA1IV,14))
        {
        case 2: break;                               
        case 14:
                        t++;
                        if(t>100)
                                t=0;
                        PWM_MircoControl(t);
                        break;
        default:break;
        }
        TA1CTL &=~TAIFG;

}


每次单步到中断总使能再往下走就会到下面这段的倒数第二条语句,然后就不能动了,PWM波是能输出的

           .sect        ".text:_isr:__TI_ISR_TRAP"
        .align        2
        .global        __TI_ISR_TRAP
__TI_ISR_TRAP:
        BIS.W     #(0x0010),SR
        JMP __TI_ISR_TRAP



此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
crjmail
1楼-- · 2019-03-24 18:35
< 楼主找到解决方法了吗
多大点事er
2楼-- · 2019-03-24 22:28
< :TI_MSP430_内容页_SA7 -->
crjmail 发表于 2016-4-29 17:04
楼主找到解决方法了吗

额,是因为开了WDT的中断,但是没有WDT的中断服务函数,把WDT_Init注释掉就好了这类问题差不多都是这种原因
crjmail
3楼-- · 2019-03-25 00:23
 精彩回答 2  元偷偷看……
多大点事er
4楼-- · 2019-03-25 05:36
crjmail 发表于 2016-5-3 09:28
什么意思?我也遇到这个问题了。还没找到解决的方法。

就是开了某个中断,但是进入这个中断后,没有后续程序了。
比方说,要用WDT做个定时中断,对这个中断的设置,一个是要中断使能,即WDTIE要置位,其次是要有服务函数,即
#pragma vector=WDT_VECTOR
__interrupt void WDT_ISR()
{
……
}
这个函数要有,如果中断服务函数没写,那程序就会死在那个位置,因为程序在进入中断后,没地方去了

一周热门 更多>

相关问题

    相关文章