配置ADC先配置好ADC的输入引脚PC1,这里我使用ADC1的第11通道.
- void ADC_Configuration()
- {
- GPIO_InitTypeDef GPIO_InitStructure;
-
- RCC_APB2PeriphClokCmd(RCC_APB2Periph_GPIOC|RCC_APB2Periph_ADC1,ENABLE);//使能PC和ADC1的时钟
- GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AIN;//选择模拟输入模式
- GPIO_InitStructure.GPIO_Pin=GPIO_Pin1;
-
- GPIO_Init(GPIOC,&GPIO_InitStructure);
- }
- 配置ADC
- void ADC_Configuration()
- {
- ADC_InitTypeDef ADC_InitStructure;
-
- ADC_InitStructure.ADC_ContinuousConvMode=ENABLE;使用连续转换模式
- ADC_InitStructure.ADC_DataAlign=ADC_DataAlign_Right;//ADC数据右对齐
- ADC_InitStructure.ADC_ExternalTrigConv=ADC_ExternalTrigConv_None;//使用软件触发ADC转换
- ADC_InitStructure.ADC_Mode=ADC_Mode_Independent;//ADC工作在独立模式
- ADC_InitStructure.ADC_NbrOfChannel=1;//选择只有一个通道开始转换
- ADC_InitStructure.ADC_ScanConvMode=DISABLE;//使用单通道模式
-
- ADC_Init(ADC1,&ADC_InitStructure);
- RCC_ADCCLKConfig(RCC_PCLK2_Div8);//选择ADC的时钟为APB2桥时钟的八分之一
-
- ADC_RegularChannelConfig(ADC1,ADC_Channel_11, 1, ADC_SampleTime_55Cycles5);//设置ADC1说我第11通道的转换顺序为第一个 采样时间为55.5个周期
- ADC_Cmd(ADC1,ENABLE);
-
- ADC_ResetCalibration(ADC1);//重置ADC1的校准寄存器
- while(ADC_GetResetCalibrationStatus(ADC1))//等待校准完成
- {
-
- }
-
- ADC_StartCalibration(ADC1);//指定ADC1的校准状态
-
- while(ADC_GetCalibrationStatus(ADC1));//等待指定完成
-
- ADC_SoftwareStartConvCmd(ADC1,ENABLE);//软件触发ADC1开始转换
- }
复制代码
最后调用 ADC_GetInjectedConversionValue(ADC1, ADC_Channel_11);就可以得到模数转换的数字量的值.
|