您好!
我在 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;
}
此致、
本
