[mw_shl_code=c,true]void ADC_SCAN_Init(void)
{
RCC_Init();
GPIOA_Init();
ADC1_Init();
//DMA1_Init();
}
void ADC1_Init(void)
{
ADC_InitTypeDef ADC1_SCAN_Init;//ADC??????
NVIC_InitTypeDef ADC1_NVIC_Init;//ADC1??????????
ADC_DeInit(ADC1);//ADC????
ADC1_SCAN_Init.ADC_ContinuousConvMode=ENABLE;//????????
ADC1_SCAN_Init.ADC_DataAlign=ADC_DataAlign_Right;//??????
ADC1_SCAN_Init.ADC_ExternalTrigConv=DISABLE;//??????·???
ADC1_SCAN_Init.ADC_Mode=ADC_Mode_Independent;//????????
ADC1_SCAN_Init.ADC_NbrOfChannel=3;//3?¨???¨?è
ADC1_SCAN_Init.ADC_ScanConvMode=ENABLE;//?¨?è??????
ADC_Init(ADC1,&ADC1_SCAN_Init);//?????ú??
ADC_RegularChannelConfig(ADC1,ADC_Channel_0,1,ADC_SampleTime_239Cycles5);//
ADC_RegularChannelConfig(ADC1,ADC_Channel_1,2,ADC_SampleTime_239Cycles5);//
ADC_RegularChannelConfig(ADC1,ADC_Channel_16,3,ADC_SampleTime_239Cycles5);//
ADC1_NVIC_Init.NVIC_IRQChannel=ADC1_2_IRQn;//z?????¨??
ADC1_NVIC_Init.NVIC_IRQChannelPreemptionPriority=2;
ADC1_NVIC_Init.NVIC_IRQChannelSubPriority=2;
ADC1_NVIC_Init.NVIC_IRQChannelCmd=ENABLE;
NVIC_Init(&ADC1_NVIC_Init);
//ADC_DMACmd(ADC1,ENABLE);//????DMA
ADC_ITConfig(ADC1,ADC_IT_EOC,ENABLE);
ADC_ClearITPendingBit(ADC1,ADC_IT_EOC);
ADC_TempSensorVrefintCmd(ENABLE);//??????????????
ADC_Cmd(ADC1,ENABLE);//?§??ADC
ADC_ResetCalibration(ADC1);//
while(ADC_GetResetCalibrationStatus(ADC1));//
ADC_StartCalibration(ADC1);//
while(ADC_GetCalibrationStatus(ADC1));//??????×??ê??
}
void GPIOA_Init(void)
{
GPIO_InitTypeDef GPIOA_Init;//IO??????
GPIOA_Init.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_1;//GPIOA.0 GPIOA.1
GPIOA_Init.GPIO_Mode=GPIO_Mode_IN_FLOATING;//????????
GPIOA_Init.GPIO_Speed=GPIO_Speed_50MHz;//50MHZ
GPIO_Init(GPIOA,&GPIOA_Init);//?????ú??
}
void RCC_Init(void)
{
RCC_ADCCLKConfig(RCC_PCLK2_Div6);//12m
RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1|RCC_APB2Periph_GPIOA|RCC_APB2Periph_AFIO,ENABLE);//?????±??
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1,ENABLE);//?????±??
}[/mw_shl_code]
|