#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读取我的代码。
引脚分配执行该操作。