配置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;使用連續(xù)轉(zhuǎn)換模式
- ADC_InitStructure.ADC_DataAlign=ADC_DataAlign_Right;//ADC數(shù)據(jù)右對齊
- ADC_InitStructure.ADC_ExternalTrigConv=ADC_ExternalTrigConv_None;//使用軟件觸發(fā)ADC轉(zhuǎn)換
- ADC_InitStructure.ADC_Mode=ADC_Mode_Independent;//ADC工作在獨立模式
- ADC_InitStructure.ADC_NbrOfChannel=1;//選擇只有一個通道開始轉(zhuǎn)換
- 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);//設(shè)置ADC1說我第11通道的轉(zhuǎn)換順序為第一個 采樣時間為55.5個周期
- ADC_Cmd(ADC1,ENABLE);
-
- ADC_ResetCalibration(ADC1);//重置ADC1的校準寄存器
- while(ADC_GetResetCalibrationStatus(ADC1))//等待校準完成
- {
-
- }
-
- ADC_StartCalibration(ADC1);//指定ADC1的校準狀態(tài)
-
- while(ADC_GetCalibrationStatus(ADC1));//等待指定完成
-
- ADC_SoftwareStartConvCmd(ADC1,ENABLE);//軟件觸發(fā)ADC1開始轉(zhuǎn)換
- }
復(fù)制代碼
最后調(diào)用 ADC_GetInjectedConversionValue(ADC1, ADC_Channel_11);就可以得到模數(shù)轉(zhuǎn)換的數(shù)字量的值.
|