马上就晚上12点了,找了很久网上查资料也找了很久。没有找到问题所在,不知道哪里配置错了?
两个通道单独测试可以,我想用程序每启动一下换一个通道,但没有结果输出。
希望有谁能指点一下,非常感谢!!!
/************************************/
通过串口打印输出
/************************************/
while(1)
{
ad=0;
ADC_SoftwareStartConvCmd(ADC1,ENABLE); //启动
while(!ADC_GetFlagStatus(ADC1,ADC_FLAG_EOC)); //等待完成
ad=ADC_GetConversionValue(ADC1);
printf("ad =%f
",3.3/4095*ad);//电压值
delay_ms(1000);
}
/************************************/
IO配置
/************************************/
void GPIO_Configuration(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AIN;
GPIO_Init(GPIOC,&GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_1;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AIN;
GPIO_Init(GPIOC,&GPIO_InitStructure);
}
/************************************/
ADC配置
/************************************/
void ADC_Configuration(void)
{
ADC_InitTypeDef ADC_InitStructure;
ADC_InitStructure.ADC_Mode=ADC_Mode_RegSimult; //工作在同步规则模式
ADC_InitStructure.ADC_ScanConvMode=ENABLE; //工作在扫描模式
ADC_InitStructure.ADC_ContinuousConvMode=DISABLE; //
ADC_InitStructure.ADC_ExternalTrigConv=ADC_ExternalTrigConv_None;
ADC_InitStructure.ADC_DataAlign=ADC_DataAlign_Right;
ADC_InitStructure.ADC_NbrOfChannel=2;
ADC_Init(ADC1,&ADC_InitStructure);
ADC_RegularChannelConfig(ADC1,ADC_Channel_10,1,ADC_SampleTime_239Cycles5);
ADC_RegularChannelConfig(ADC1,ADC_Channel_11,2,ADC_SampleTime_239Cycles5);
ADC_DiscModeChannelCountConfig(ADC1,1);
ADC_DiscModeCmd(ADC1,ENABLE);
ADC_Cmd(ADC1,ENABLE);
ADC_ResetCalibration(ADC1);
while(ADC_GetResetCalibrationStatus(ADC1));
ADC_StartCalibration(ADC1);
while(ADC_GetCalibrationStatus(ADC1));
ADC_SoftwareStartConvCmd(ADC1,ENABLE);
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
这个问题真的没搞明白,请教一下!
如果不用扫描模式,ADC通道如何跳转到下一个通道。
比如1通道ADC转换完后跳的2通道给ADC转换。
谢谢你的回帖
我在网上看了一下别人的方法,
通过程序直接选择通道转换
时可行的。
一周热门 更多>