用原子老师的ADC程序改的,我用的是,PA0引脚,对应通道0,测电压:
//PA0 ×÷???????¨??????????
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN; //????????????
GPIO_Init(GPIOA, &GPIO_InitStructure);
ADC_DeInit(ADC1); //????ADC1,?????è ADC1 ???????????÷???è???±????
ADC_InitStructure.ADC_Mode = ADC_Mode_Independent; //ADC?¤×÷????:ADC1??ADC2?¤×÷??????????
ADC_InitStructure.ADC_ScanConvMode = DISABLE; //????×????¤×÷?????¨??????
ADC_InitStructure.ADC_ContinuousConvMode = DISABLE; //????×????¤×÷??????×???????
ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None; //×??????í??????????????·?????
ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right; //ADC??????????
ADC_InitStructure.ADC_NbrOfChannel = 1; //???ò???????ò×?????ADC?¨????????
ADC_Init(ADC1, &ADC_InitStructure); //?ù??ADC_InitStruct?????¨???????????????èADCx???????÷
ADC_RegularChannelConfig(ADC1, ADC_Channel_0, 1, ADC_SampleTime_239Cycles5 ); //ADC1,ADC?¨??,???ù?±????239.5????
ADC_Cmd(ADC1, ENABLE); //???????¨??ADC1
ADC_ResetCalibration(ADC1); //??????????×?
while(ADC_GetResetCalibrationStatus(ADC1)); //??????????×??á??
ADC_StartCalibration(ADC1); //????AD??×?
while(ADC_GetCalibrationStatus(ADC1)); //??????×??á??
原理图 如下
附源程序,看了一天,快看哭了。。。
|