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

ti isr trap

#include <msp430.h>
/**
 * main.c
 */
/*
 * arch_main.c
 *
 *  Created on: 2019年2月27日
 *      Author: Administrator
 */
#include"sys_init.h"
UINT sysclk_cnt=0;
void main(void)
{
#ifdef VoltageMonitor
    BYTE vollowflag=0;
#endif
    BYTE Redled_sta,Greenled_sta;
    static FRESULT worksta;
    Data_Status filesta;
    system_clk_config();
    mcuio_init();
    worksta=filesystem_init();
    timer_b_config();
    adc12_init();
    __bis_SR_register(GIE);
    start_tb;
    start_adc();
    while(1){
        _nop();
        __bis_SR_register(LPM0_bits+GIE);
        //———data2flash—————-
        switch(worksta){
                case FR_OK:
                    filesta=datamix(&datamixen);
                    if(Flash_Data_Ready==filesta){
                        worksta=f_write(&fsrc,flashdatabuffer,InFlash_length,&bytewrote);
                        f_sync(&fsrc);
                    }
                    break;
                default:
                    if(!(sysclk_cnt-(sysclk_cnt>>3<<3))){
                        Redled_sta^=0x01;
                        led_sta_sel(LED_Red_1,Redled_sta);
                    }
                    if(datamixen){
                        datamixen=0;
                    }
        }
            //——-AVCC电压监测—–
#ifdef  VoltageMonitor
        if(SVSCTL&SVSFG){
                        vollowflag++;
                        Vol_Monitor_OFF;
                        if(vollowflag>=32){
                            worksta=f_write(&fsrc,flashdatabuffer,InFlash_length,&bytewrote);
                            f_sync(&fsrc);
                            f_close(&fsrc);
                            f_mount(0,0);
                            vollowflag=0;
                            BoardPwr_OFF;
                            while(1);
                        }
                        Vol_Monitor_ON;
        }
#endif
    }
}
// Timer B0 interrupt service routine
#if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)
#pragma vector=TIMERB0_VECTOR
__interrupt void Timer_B (void)
#elif defined(__GNUC__)
void __attribute__ ((interrupt(TIMERB0_VECTOR))) Timer_B (void)
#else
#error Compiler not supported!
#endif
{
    sysclk_cnt++;
    if(sysclk_cnt>=1025){
        sysclk_cnt=1;
    }
    __bic_SR_register_on_exit(LPM0_bits);     // Clear LPM0, SET BREAKPOINT HERE
}
上面的程序总是运行一段时间就进入isr_trap_asm,什么原因?
定时器设定为1/16秒中断一次
user4222773:

问题追加:

运行时就会出现这种错误

灰小子:

楼主,你好。你的图片都挂了,看不到。建议重新上传一下图片。

Susan Yang:

建议您以附件形式重新上传一下您的图片,谢谢

user4222773:

user4222773:

回复 灰小子:

楼下重新上传了,求解

灰小子:

回复 user4222773:

楼主,你好。
此类问题出现的原因一般是声明了一个中断并使能,但是并未写该函数的中断服务程序。或者是中断服务程序使用的中断向量和使能的中断不匹配。
你用的哪个型号的msp430?

赞(0)
未经允许不得转载:TI中文支持网 » ti isr trap
分享到: 更多 (0)