This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

求助:MSP430 每次不while(1)循环,执行到特殊位置卡死,...



如图,
郁闷,为何会执行到这个地方,换了个片子也是。
用的672x

void main( void )
{
  // Stop watchdog timer to prevent time out reset
  WDTCTL = WDTPW + WDTHOLD;
  __disable_interrupt();
  ClkInit();
  P4SEL &= ~BIT1; P4DIR |= BIT1;   //蜂鸣器控制脚
  Timer2_A2_Init();
 __enable_interrupt();    
while(1)
{
    if( Button_Scan(1) == 1 )
    {
     P4OUT |= BIT1;
      _delay_ms(50);
    }
    else 
    {
       P4OUT &= ~BIT1;
    }
  
}
}
void main( void )
{
  // Stop watchdog timer to prevent time out reset
  WDTCTL = WDTPW + WDTHOLD;
  __disable_interrupt();
  ClkInit();
  P4SEL &= ~BIT1; P4DIR |= BIT1;   //蜂鸣器控制脚
  Timer2_A2_Init();
 __enable_interrupt();    
while(1)
{
    if( Button_Scan(1) == 1 )
    {
     P4OUT |= BIT1;
      _delay_ms(50);
    }
    else 
    {
       P4OUT &= ~BIT1;
    }
  
}
}


  • 定时器代码
    void Timer2_A2_Init(void)
    {
    TIMER2_A2->CCR0 = 409; //4096/10 = 100ms
    TIMER2_A2->CTL |= 0x01c2; //ACLK、32768/8=4096中断开启
    TIMER2_A2->CNT = 1; //定时器中的值,不能为0,
    TIMER2_A2->CCTL0 |= CCIE;
    TIMER2_A2->CTL |= 0x10; //Up mode
    }
    #pragma vector=TIMER2_A0_VECTOR
    __interrupt void TIMER2_A2_ISR(void)
    {
    P4OUT |= BIT1;
    }

    -----------------------------TI的网站好卡

  • 代码停在什么地方

  • 你好,谢谢你理睬我。 之前的问题解决了,是我的过错。开了bit1  TAIE这个中断。我想问下您如下3个问题:

    1: TAIE的中断入口地址是多少啊?  

    2: 进入中断不必要清 中断标志位吧?

    3:

    #pragma vector=TIMER2_A0_VECTOR
    __interrupt void TIMER2_A0_ISR(void)

    其中“TIMER2_A0_ISR”可以写成任意的 名字吧???  还有,为何要这样写?可以换个写法吗?

  • 中断向量地址在msp430F67xx.h文件里有,Datasheet里也有向量列表

    中断入口函数TIMER2_A0_ISR(),你只需要在函数里面写你的相应操作,不建议改函数名,每个芯片有不同Timer,每个Timer里面又有几个CCR,便于识别

  • // ************************************************
    //
    // Definitions of I/O register description file,
    // interrupt/exception vectors, interrupt control registers,
    // I/O register reset values.
    //
    // Copyright 1996-2011 IAR Systems AB
    //
    // $Revision: 11882 $
    //
    // ************************************************
    
    // ---------------------------------------------------------
    // Memory information
    //
    
    //
    // Used to define address zones within the MSP430 address space (Memory).
    //
    // Name      may be almost anything
    // AdrSpace  must be Memory
    // StartAdr  start of memory block
    // EndAdr    end of memory block
    // AccType   type of access, read-only (R) or read-write (RW)
    //
    [Memory]
    //         Name             AdrSpace    StartAdr    EndAdr    AccType
    Memory0  = SFR              Memory      0x0000      0x0FFF    RW
    Memory1  = RAM              Memory      0x1C00      0x2BFF    RW
    Memory2  = INFO             Memory      0x1800      0x19FF    R
    Memory3  = FLASH            Memory      0x4000      0x13FFF   R
    
    
    // ---------------------------------------------------------
    // I/O Register description file
    //
    
    [SfrInclude]
    File = msp430f6723.sfr
    
    // -----------------------------------------------
    // Interrupt definitions
    //
    
    [InterruptList]
    //                 Id                      Table Adr     Prio    Enable                  Pending   
    Interrupt0   =  RTC_VECTOR              0x50          2       RTCCTL0.RTCRDYIE        RTCCTL0.RTCRDYIFG
    Interrupt1   =  LCD_C_VECTOR            0x52          2       LCDCCTL1.LCDFRMIE       LCDCCTL1.LCDFRMIFG
    Interrupt2   =  TIMER3_A1_TACCR1_VECTOR 0x54          2       TA3CCTL1.CCIE           TA3CCTL1.CCIFG 
    Interrupt3   =  TIMER3_A1_TAR_VECTOR    0x54          2       TA3CTL.TAIE             TA3CTL.TAIFG   
    Interrupt4   =  TIMER3_A0_VECTOR        0x56          2       TA3CCTL0.CCIE           TA3CCTL0.CCIFG 
    Interrupt5   =  PORT2_VECTOR_P0         0x58          2       P2IE.P2IE0              P2IFG.P2IFG0   
    Interrupt6   =  PORT2_VECTOR_P1         0x58          2       P2IE.P2IE1              P2IFG.P2IFG1   
    Interrupt7   =  PORT2_VECTOR_P2         0x58          2       P2IE.P2IE2              P2IFG.P2IFG2   
    Interrupt8   =  PORT2_VECTOR_P3         0x58          2       P2IE.P2IE3              P2IFG.P2IFG3   
    Interrupt9   =  PORT2_VECTOR_P4         0x58          2       P2IE.P2IE4              P2IFG.P2IFG4   
    Interrupt10  =  PORT2_VECTOR_P5         0x58          2       P2IE.P2IE5              P2IFG.P2IFG5   
    Interrupt11  =  PORT2_VECTOR_P6         0x58          2       P2IE.P2IE6              P2IFG.P2IFG6   
    Interrupt12  =  PORT2_VECTOR_P7         0x58          2       P2IE.P2IE7              P2IFG.P2IFG7   
    Interrupt13  =  TIMER2_A1_VECTOR        0x5A          2       TA2CCTL1.CCIE           TA2CCTL1.CCIFG 
    Interrupt14  =  TIMER2_A1_VECTOR        0x5A          2       TA2CTL.TAIE             TA2CTL.TAIFG   
    Interrupt15  =  TIMER2_A0_VECTOR        0x5C          2       TA2CCTL0.CCIE           TA2CCTL0.CCIFG 
    Interrupt16  =  PORT1_VECTOR_P0         0x5E          2       P1IE.P1IE0              P1IFG.P1IFG0   
    Interrupt17  =  PORT1_VECTOR_P1         0x5E          2       P1IE.P1IE1              P1IFG.P1IFG1   
    Interrupt18  =  PORT1_VECTOR_P2         0x5E          2       P1IE.P1IE2              P1IFG.P1IFG2   
    Interrupt19  =  PORT1_VECTOR_P3         0x5E          2       P1IE.P1IE3              P1IFG.P1IFG3   
    Interrupt20  =  PORT1_VECTOR_P4         0x5E          2       P1IE.P1IE4              P1IFG.P1IFG4   
    Interrupt21  =  PORT1_VECTOR_P5         0x5E          2       P1IE.P1IE5              P1IFG.P1IFG5   
    Interrupt22  =  PORT1_VECTOR_P6         0x5E          2       P1IE.P1IE6              P1IFG.P1IFG6   
    Interrupt23  =  PORT1_VECTOR_P7         0x5E          2       P1IE.P1IE7              P1IFG.P1IFG7   
    Interrupt24  =  TIMER1_A1_TACCR1_VECTOR 0x60          2       TA1CCTL1.CCIE           TA1CCTL1.CCIFG 
    Interrupt25  =  TIMER1_A1_TAR_VECTOR    0x60          2       TA1CTL.TAIE             TA1CTL.TAIFG   
    Interrupt26  =  TIMER1_A0_VECTOR        0x62          2       TA1CCTL0.CCIE           TA1CCTL0.CCIFG 
    Interrupt27  =  DMA_VECTOR              0x64          2       DMA0CTL.DMAIE           DMA0CTL.DMAIFG 
    Interrupt28  =  DMA_VECTOR              0x64          2       DMA0CTL.DMAIE           DMA0CTL.DMAIFG 
    Interrupt29  =  AUX_VECTOR              0x66          2       AUXIE.AUXSWNMIE         AUXIFG.AUXSWNMIFG
    Interrupt30  =  USCI_A2_VECTOR          0x68          2       UCA2IE                  UCA2IFG        
    Interrupt31  =  USCI_A1_VECTOR          0x6A          2       UCA1IE                  UCA1IFG        
    Interrupt32  =  TIMER0_A1_TAR_VECTOR    0x6C          2       TA0CTL.TAIE             TA0CTL.TAIFG   
    Interrupt33  =  TIMER0_A0_VECTOR        0x6E          2       TA0CCTL0.CCIE           TA0CCTL0.CCIFG 
    Interrupt34  =  SD24B_VECTOR            0x70          2       SD24BIE.SD24IE0         SD24BIFG.SD24IFG0
    Interrupt35  =  ADC10_VECTOR            0x72          2       ADC10IE.ADC10IE0        ADC10IFG.ADC10IFG0
    Interrupt36  =  USCI_B0_VECTOR          0x74          2       UCB0IE                  UCB0IFG        
    Interrupt37  =  USCI_A0_VECTOR          0x76          2       UCA0IE                  UCA0IFG        
    Interrupt38  =  WDT_VECTOR              0x78          2       SFRIE1.WDTIE            SFRIFG1.WDTIFG 
    Interrupt39  =  UNMI_VECTOR             0x7A          2       SFRIE1.NMIIE            SFRIFG1.NMIIFG 
    Interrupt40  =  SYSNMI_VECTOR           0x7C          2       SFRIE1.NMIIE            SFRIFG1.NMIIFG 
    Interrupt41  =  RESET_VECTOR            0x7E          1         
    
    
    ;; End of file  
    

    ======================

    我找到了,发完贴的半小时就解决了,本想把解决方法发上去,但苦于 TI的网络实在是。。。。你知道的