Hi, Alex,
I do not use the Keil, I have checked the LPCOpen package, it appears that you do not use the lpcOpen package api function.
Because the conversion time is not a problem, you can use the polling mode as the following code. I suggest you disable all channel interrupt
I do not compile the code, pls have a try yourself.
BR
XiangJun Rong
//disable all channel interrupt
void HW_Init()
{
PINSEL_CFG_Type adcpinsel;
PINSEL_CFG_Type uartPinSel;
UART_CFG_Type uartConfig;
NVIC_SetPriorityGrouping(0x07);
adcpinsel.Funcnum=PINSEL_FUNC_1;
adcpinsel.OpenDrain=PINSEL_PINMODE_NORMAL;
adcpinsel.Pinmode=PINSEL_PINMODE_TRISTATE;
adcpinsel.Pinnum=24;
adcpinsel.Portnum=0;
PINSEL_ConfigPin(&adcpinsel);
adcpinsel.Pinnum=23;
PINSEL_ConfigPin(&adcpinsel);
adcpinsel.Pinnum=25;
PINSEL_ConfigPin(&adcpinsel);
//adcpinsel.Pinnum=26;
//PINSEL_ConfigPin(&adcpinsel);
ADC_Init(LPC_ADC,200000);
ADC_IntConfig(LPC_ADC,ADC_ADINTEN1,DISABLE);
ADC_IntConfig(LPC_ADC,ADC_ADINTEN0,DISABLE);
ADC_IntConfig(LPC_ADC,ADC_ADINTEN2,DISABLE);
ADC_IntConfig(LPC_ADC,ADC_ADINTEN3,DISABLE);
ADC_IntConfig(LPC_ADC,ADC_ADINTEN4,DISABLE);
ADC_IntConfig(LPC_ADC,ADC_ADINTEN5,DISABLE);
ADC_IntConfig(LPC_ADC,ADC_ADINTEN6,DISABLE);
ADC_IntConfig(LPC_ADC,ADC_ADINTEN7,DISABLE);
//ADC_ChannelCmd(LPC_ADC,ADC_CHANNEL_1,ENABLE);
//ADC_ChannelCmd(LPC_ADC,ADC_CHANNEL_0,ENABLE);
//ADC_ChannelCmd(LPC_ADC,ADC_CHANNEL_2,ENABLE);
//ADC_ChannelCmd(LPC_ADC,ADC_CHANNEL_3,ENABLE);
//NVIC_SetPriority(ADC_IRQn,NVIC_EncodePriority(0x07,0,1));
//NVIC_EnableIRQ(ADC_IRQn);
............
}
uint16_t HW_ADC_Read(uint8_t channel_num)
{
uint16_t voltage;
//disable all channels
ADC_ChannelCmd(LPC_ADC,ADC_CHANNEL_0,DISABLE);
ADC_ChannelCmd(LPC_ADC,ADC_CHANNEL_1,DISABLE);
ADC_ChannelCmd(LPC_ADC,ADC_CHANNEL_2,DISABLE);
ADC_ChannelCmd(LPC_ADC,ADC_CHANNEL_3,DISABLE);
ADC_ChannelCmd(LPC_ADC,ADC_CHANNEL_4,DISABLE);
ADC_ChannelCmd(LPC_ADC,ADC_CHANNEL_5,DISABLE);
ADC_ChannelCmd(LPC_ADC,ADC_CHANNEL_6,DISABLE);
ADC_ChannelCmd(LPC_ADC,ADC_CHANNEL_7,DISABLE);
//enable the sampled channel
ADC_ChannelCmd(LPC_ADC,1<<channel_num,ENABLE);
ADC_StartCmd(LPC_ADC,ADC_START_NOW);
while(ADC_ChannelGetStatus(LPC_ADC,1<<channel_num,ADC_DATA_DONE)==0) {}
voltage=ADC_ChannelGetData(LPC_ADC,1<<channel_num);
return voltage;
}