本帖最后由 wazhzlp 于 2013-5-10 09:06 编辑
下面是对ADC1的配置,我配置了3和5通道。程序都有注释。帮忙看看
这样的配置是否存在什么问题:
void Init_ADC1(void)
{
GPIO_Init(GPIOB, GPIO_PIN_3, GPIO_MODE_IN_FL_NO_IT); // PB3设置为输入
GPIO_Init(GPIOB, GPIO_PIN_5, GPIO_MODE_IN_FL_NO_IT); //PB5设置为输入
/* Initialize ADC1 in RESET value */
ADC1_DeInit(); //参数初始化
/* Debug ADC1 scan mode */
ADC1_ConversionConfig(ADC1_CONVERSIONMODE_SINGLE, ADC1_CHANNEL_3, ADC1_ALIGN_RIGHT);
//转换模式,通道,和对齐模式,这里选择3通道 单次转换,右对齐
ADC1_SchmittTriggerConfig(ADC1_SCHMITTTRIG_CHANNEL3, DISABLE);
//关闭3通道的施密特触发功能
ADC1_ConversionConfig(ADC1_CONVERSIONMODE_SINGLE, ADC1_CHANNEL_5, ADC1_ALIGN_RIGHT);
//转换模式,通道,和对齐模式,这里选择5通道 单次转换,右对齐
ADC1_SchmittTriggerConfig(ADC1_SCHMITTTRIG_CHANNEL5, DISABLE);
//关闭3通道的施密特触发功能
ADC1_ScanModeCmd(ENABLE); //设置为扫描模式,这样配置之后就是单次扫描模式了
ADC1_DataBufferCmd(ENABLE); //这里配置的是开启数据缓冲区,可以把单次转换的数据放里面,等到每次接受之后取出来。
ADC1_ITConfig(ADC1_IT_EOCIE, ENABLE); //开启转换结束中断。这样在每次但是扫描结束之后触发中断,然后对其进行处理。
}
其实最有一条 ADC1_ITConfig(ADC1_IT_EOCIE, ENABLE);没有使用,因为在手册里写的是:
不开中断也是可以EOC标志位被置位,也就是在后面的数据采集采用这样查询EOC标志位来参看是否转换完成。
这样的配置有问题吗?
请帮忙,谢谢
|