void ADC1_Init(void)
{
GPIO_InitType GPIO_InitStructure;
ADC_InitType ADC_InitStructure;
RCC_EnableAHBPeriphClk(RCC_AHB_PERIPH_ADC1 , ENABLE);
RCC_EnableAPB2PeriphClk(RCC_APB2_PERIPH_GPIOC , ENABLE);
ADC_ConfigClk(ADC_CTRL3_CKMOD_AHB,RCC_ADCHCLK_DIV16);
RCC_ConfigAdc1mClk(RCC_ADC1MCLK_SRC_HSE, RCC_ADC1MCLK_DIV8);
GPIO_InitStructure.Pin = GPIO_PIN_0 | GPIO_PIN_1;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
GPIO_InitPeripheral(GPIOC, &GPIO_InitStructure);
ADC_InitStructure.WorkMode = ADC_WORKMODE_INDEPENDENT;
ADC_InitStructure.MultiChEn = DISABLE;
ADC_InitStructure.ContinueConvEn = DISABLE;
ADC_InitStructure.ExtTrigSelect = ADC_EXT_TRIGCONV_NONE;
ADC_InitStructure.DatAlign = ADC_DAT_ALIGN_R;
ADC_InitStructure.ChsNumber = 1;
ADC_Init(ADC1, &ADC_InitStructure);
ADC_Enable(ADC1, ENABLE);
while(ADC_GetFlagStatusNew(ADC1,ADC_FLAG_RDY) == RESET);
ADC_StartCalibration(ADC1);
while (ADC_GetCalibrationStatus(ADC1));
}
uint16_t ADC1_GetData(uint8_t ADC_Channel)
{
uint16_t dat;
ADC_ConfigRegularChannel(ADC1, ADC_Channel, 1, ADC_SAMP_TIME_239CYCLES5);
ADC_EnableSoftwareStartConv(ADC1, ENABLE);
while(ADC_GetFlagStatus(ADC1, ADC_FLAG_ENDC)==0);
ADC_ClearFlag(ADC1, ADC_FLAG_ENDC);
ADC_ClearFlag(ADC1, ADC_FLAG_STR);
dat=ADC_GetDat(ADC1);
return dat;
}