很是郁闷,试过多种方法,但是不管怎么改,读出来的都是409X的,百思不得其解,求助下,希望坛友给支支招,感激不尽!!复制代码
void Adc_Init(void)
{
GPIO_InitTypeDef GPIO_InitA;
ADC_InitTypeDef ADC_InitStructure;
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE);
ADC_DeInit(ADC1);
ADC_StructInit(&ADC_InitStructure);
RCC_ADCCLKConfig(RCC_ADCCLK_PCLK_Div2);
GPIO_InitA.GPIO_Pin=GPIO_Pin_1;//ADC
GPIO_InitA.GPIO_Mode=GPIO_Mode_AN;
GPIO_InitA.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_Init(GPIOA,&GPIO_InitA);
ADC_InitStructure.ADC_Resolution = ADC_Resolution_12b;
ADC_InitStructure.ADC_ContinuousConvMode = ENABLE;
ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConvEdge_None;
ADC_InitStructure.ADC_ExternalTrigConvEdge=ADC_ExternalTrigConvEdge_None;
ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;
ADC_InitStructure.ADC_ScanDirection = ADC_ScanDirection_Upward;
ADC_Init(ADC1, &ADC_InitStructure);
ADC_ChannelConfig(ADC1,ADC_Channel_1,ADC_SampleTime_239_5Cycles);
ADC_GetCalibrationFactor(ADC1);
ADC_Cmd(ADC1,ENABLE);
}
while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_ADEN)); // 等待ADC准备好
ADC_StartOfConversion(ADC1); // 启动转换
st官方库很多现存代码基本可以直接拿来用。
觉得软件配置无误的话,再检查下硬件,尤其电源,VDDA接了没有?通道是否选择正确?
加上也没用,还是读出409X。
测过,硬件上是OK的。。
到主控的那个pin的电源也是正常的,估计是软件配置上有问题,就是找不出哪里问题,,
测过,硬件上是OK的。。
到主控的那个pin的电源也是正常的,估计是软件配置上有问题,就是找不出哪里问题,,
输入到那个pin的电压什么的都正常
PA1就是检测 ADC 通道1的pin