您好!
我在 msp430fr2433上配置 ADC 模块已经有几天的时间了、但是 程序只停留在第35行的特定行。我无法处理它。 可以检查一下吗?
#include <msp430.h> /** * main.c */ int main(void) { WDTCTL = WDTPW | WDTHOLD; // stop watchdog timer P1DIR &= ~BIT5; P1DIR |= BIT0 + BIT1; P1OUT |= BIT0 + BIT1; P1OUT &= ~(BIT0 + BIT1); PM5CTL0 &= ~LOCKLPM5; ADCCTL0 |= ADCON + ADCSHT_2;//采样保持时钟源默认即ADC时钟,ADC时钟源默认MODCLK=5MHz,采样保持16个ADC时钟周期 ADCCTL1 |= ADCCONSEQ_2; ADCMCTL0 |= ADCINCH_13 + ADCSREF_1;//15通道,使用内部1.5V参考电压 SYSCFG2 |= ADCPCTL5; //A5口输入 ADCIE |= ADCIE0; //使能ADC中断 PMMCTL2 |= INTREFEN;//使能内部参考电压 for(;;) { __delay_cycles(50); ADCCTL0 |= ADCENC + ADCSC; //ADCIFG |= ADCIFG0; __bis_SR_register(CPUOFF + GIE); __no_operation(); if(ADCMEM0 > 512) { P1OUT |= BIT0; __delay_cycles(1000000); } else { P1OUT &= ~BIT0; __delay_cycles(1000000); } } } #if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__) #pragma vector=ADC_VECTOR __interrupt #elif defined(__GNUC__) __attribute__((interrupt(ADC_VECTOR))) #endif void ADCLED(void) { switch(__even_in_range(ADCIV,12)) { case 0: break; //No interrupt case 2: break; //conversion result overflow case 4: break; //conversion time overflow case 6: break; //ADC10HI case 8: break; //ADC10LO case 10: break; //ADC10IN case 12: //ADC10IFG0 __bic_SR_register_on_exit(CPUOFF); P1OUT |= BIT1; __delay_cycles(1000000); P1OUT &= ~BIT1; break; default:break; } //ADCIFG &= ~ADCIFG0; }
此致、
本