工具/软件:
你(们)好
我在工程中使用 MSP430FR2355 控制器、
我想使用 ADC、对于我的一个工程、我要初始化所有 ADC 寄存器、ADC 中断也可以工作。
但是、虽然从 ADCMEM0 寄存器读取时始终显示 101 或 102 的值、但我在端口引脚 1.0 上施加的电压为 1.55VDC。
帮助解决此问题。
我每 100ms 使用以下命令启动一次 ADC 转换。
ADCCTL0 |=(ADCENC | ADCSC);
我的代码如下:
void adc_config()
{
    P1SEL0  |=BIT0;
    P1SEL1  |=BIT0;
    // Disable the GPIO power-on default high-impedance mode to activate
    // previously configured port settings
    PM5CTL0 &= ~LOCKLPM5;
    // Configure ADC12
    ADCCTL0 |= ADCSHT_2 | ADCON;                             // ADCON, S&H=16 ADC clks
    ADCCTL1 |= ADCSHP;                                       // ADCCLK = MODOSC; sampling timer
    ADCCTL2 &= ~ADCRES;                                      // clear ADCRES in ADCCTL
    ADCCTL2 |= ADCRES_2;                                     // 12-bit conversion results
    ADCMCTL0 |= ADCINCH0;                                   // A1 ADC input select; Vref=AVCC
    ADCIE |= ADCIE0;
}
// ADC interrupt service routine
#if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)
#pragma vector=ADC_VECTOR
__interrupt void ADC_ISR(void)
#elif defined(__GNUC__)
void __attribute__ ((interrupt(ADC_VECTOR))) ADC_ISR (void)
#else
#error Compiler not supported!
#endif
{
    switch(__even_in_range(ADCIV,ADCIV_ADCIFG))
    {
        case ADCIV_NONE:
            break;
        case ADCIV_ADCOVIFG:
            break;
        case ADCIV_ADCTOVIFG:
            break;
        case ADCIV_ADCHIIFG:
            break;
        case ADCIV_ADCLOIFG:
            break;
        case ADCIV_ADCINIFG:
            break;
        case ADCIV_ADCIFG:
            ADC_data[0] = ADCMEM0;
            __bic_SR_register_on_exit(LPM0_bits);            // Clear CPUOFF bit from LPM0
            break;
        default:
            break;
    }
}
谢谢、
Yuvaraj
 
				 
		 
					