也许和内部上拉有关,我的配置如下,测出来还是比较准的,希望对你有帮助
/* Disable Power down bit to the ADC block. ADC Power UP*/
LPC_SYSCON->PDRUNCFG &= ~(0x1<<4);
/* Enable AHB clock to the ADC. */
LPC_SYSCON->SYSAHBCLKCTRL |= (1<<13);
//#if 0
//LPC_IOCON->JTAG_TDI_PIO0_11 &= ~0x9F; /* Clear bit7, change to analog mode. */
//LPC_IOCON->JTAG_TDI_PIO0_11 |= 0x02; /* ADC IN0 */
LPC_IOCON->JTAG_TMS_PIO1_0 &= ~0x9F; /* Clear bit7, change to analog mode. */
LPC_IOCON->JTAG_TMS_PIO1_0 |= 0x02; /* ADC IN1 */
LPC_IOCON->JTAG_TDO_PIO1_1 &= ~0x9F; /* Clear bit7, change to analog mode. */
LPC_IOCON->JTAG_TDO_PIO1_1 |= 0x02; /* ADC IN2 */
LPC_IOCON->JTAG_nTRST_PIO1_2 &= ~0x9F; /* Clear bit7, change to analog mode. */
LPC_IOCON->JTAG_nTRST_PIO1_2 |= 0x02; /* ADC IN3 */
//#endif
//LPC_IOCON->PIO1_11 &= ~0x9F; /* Clear bit7, change to analog mode. */
//LPC_IOCON->PIO1_11 |= 0x02; /* ADC IN7 */
LPC_ADC->CR = ((SystemAHBFrequency / ADC_Clk - 1 ) << 8 ); /* CLKDIV = Fpclk / 1000000 - 1 */
#ifdef ADC_TIME_DRIVER
NVIC_EnableIRQ(ADC_IRQn);
LPC_ADC->INTEN = 0x00F; /* Enable all interrupts */
LPC_ADC->CR &= ~(( 0x01 << 17 ) | ( 1 << 18 ) | ( 1 << 19 ) | /* CLKS = 0, 11 clocks/10 bits */
( 1 << 24 ) | ( 1 << 25 ) | ( 1 << 16 )); /* START = 0 A/D conversion stops BURST=0*/
/* Channel select CH-0,1,2,3,7, BURST = 1, hardware controlled 26-24: 100 Timer320-MAT0 , 27:1 MAT0 Falling edge*/
LPC_ADC->CR |= (( 0x1 << 1 ) | ( 1 << 2 ) | ( 1 << 3 ) | /*( 1 << 7 ) | */( 1 << 26 ) | (1<<27)); /* ( 0x01 << 0 ) 定时器32-0的MAT0下沿时启动转换*/
|