1.ADC初始化
2.ADC启动
//ADC初始化
void ADC1_init(void)
{
ADC_CommonInitTypeDef ADC_CommonInitStructure;
ADC_InitTypeDef ADC_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE); //使能ADC1时钟
ADC_CommonInitStructure.ADC_Mode = ADC_Mode_Independent;//设置为独立模式
ADC_CommonInitStructure.ADC_Prescaler = ADC_Prescaler_Div4;//设置对PCLK2四分频,即为21MHz
ADC_CommonInitStructure.ADC_DMAAccessMode = ADC_DMAAccessMode_Disabled;//禁止响应的DMA模式
ADC_CommonInitStructure.ADC_TwoSamplingDelay = ADC_TwoSamplingDelay_5Cycles;//设置两个采样阶段的延迟周期数,实际上这个参数只用在双重和三重交替模式,独立模式不需要设置
ADC_CommonInit(&ADC_CommonInitStructure);
ADC_InitStructure.ADC_Resolution = ADC_Resolution_12b;//设置12位转换分辨率
ADC_InitStructure.ADC_ScanConvMode = DISABLE;//选择是否使用扫描,单通道位DISABLE,多通道为ENABLE
ADC_InitStructure.ADC_ContinuousConvMode = DISABLE;//选择连续转换还是单次转换,这里选单次转换
ADC_InitStructure.ADC_ExternalTrigConvEdge = ADC_ExternalTrigConvEdge_None;//设置外部触发极性
//ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_T2_TRGO;//选择触发模式为TIM2溢出启动A/D转换
ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;//设置数据对齐方式
ADC_InitStructure.ADC_NbrOfConversion = 1;//设置规则序列的长度,由于是单次转换,设为1即可
ADC_Init(ADC1,&ADC_InitStructure);
ADC_TempSensorVrefintCmd(ENABLE);//使能内部温度传感器
ADC_Cmd(ADC1,ENABLE);
}
u16 Start_ADC(void)
{
ADC_RegularChannelConfig(ADC1, ADC_Channel_16, 1, ADC_SampleTime_480Cycles );//启动配置
ADC_SoftwareStartConv(ADC1); //软件启动
while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC ));//等待转换结束
ADC_value = ADC_GetConversionValue(ADC1);
return ADC_value;
}