#include <msp430.h>
unsigned int ADC_value;
int main(void)
{
WDTCTL = WDTPW | WDTHOLD; // stop watchdog timer
P2SEL1 |= BIT2; // Configure P2.2 for ADC
P2SEL0 |= BIT2;
PM5CTL0 &= ~LOCKLPM5; // Unlock I/O pins
// Configure internal voltage reference
while (REFCTL0 & REFGENBUSY); // If reference generator busy, WAIT
REFCTL0 |= REFVSEL_0 | REFON; // Select internal ref = 2.5V, Reference ON
// Configure ADC
ADC12CTL0 &= ~ADC12SHT0;
ADC12CTL0 |= ADC12SHT0_2; // 16 ADC12CLK cycles
ADC12CTL0 |= ADC12ON; // Turn on ADC12
ADC12CTL1 |= ADC12SSEL_2 | ADC12SHP; // SMCLK, sample-and-hold mode
ADC12CTL2 &= ~ADC12RES_3; // Clear resolution bits
ADC12CTL2 |= ADC12RES_2; // 12-bit conversion resolution
ADC12MCTL0 |= ADC12INCH_14; // Channel A14 (P2.2)
ADC12CTL0 &= ~ADC12VRSEL_2; // Clear previous reference voltage selection
ADC12CTL0 |= ADC12VRSEL_2; // Select AVCC as Vref+ and AVSS as Vref-
ADC12IER0 |= ADC12IE0; // Enable ADC interrupt
__enable_interrupt(); // Enable global interrupts
while (1)
{
ADC12CTL0 |= ADC12ENC | ADC12SC; // Start conversion
// Main application logic can be added here
}
}
// ADC ISR
#pragma vector = ADC12_VECTOR
__interrupt void ADC12_ISR(void)
{
ADC_value = ADC12MEM0; // Read ADC value
ADC12IFGR0 &= ~ADC12IFG0; // Clear interrupt flag
}
我尝试从通道14读取我的代码。
引脚分配执行该操作。

