Quantcast
Channel: MSP 低功耗微控制器论坛 - 最近的话题
Viewing all articles
Browse latest Browse all 3634

ti isr trap

$
0
0
#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秒中断一次

Viewing all articles
Browse latest Browse all 3634

Trending Articles