谢谢各位,已经可以双通道采样了,但是好像AD1和AD2互相有干扰,是不是我哪里没设置好呀
/*******************************************************************************
* 函数名 : ADC_configuration 说明 : ADC初始化,采样完成后自动DMA到缓冲区
*******************************************************************************/
void ADC_Configuration(void)
{
ADC2_CR1 =0x00060100;
ADC1_CR1 =0x00060100;/*
||||||++---AWDCH[4:0]:模拟看门狗通道选择位
||||||+----=000:不允许EOC、AWD、JEOC中断
|||||+-----Nib8_SCAN=1:使用扫描模式
||||++-----保持复位值
|||+-------DUALMOD=6:规则同步模式
||+--------规则通道和注入通道禁用模拟看门狗
++---------保留*/
ADC2_CR2 =0x00100000;
ADC1_CR2 =0x00100100;/*
|||||||+---ADON=0:关闭ADC转换/校准,=1:开启ADC并启动转换
|||||||+---CONT=0:1:连续转换模式
|||||||+---CAL=0,=1:A/D校开始准,校准后该位将被硬件清除
|||||||+---RSTCAL=0,=1:初始化校准寄存器,校准后该位将被硬件清除
||||||+----保留
|||||+-----ALIGN=0 & DMA=1:数据右对齐和使用DMA模式
||||+------注入通道设置,这里未使用,设置为默认值
|||+-------=0000:规则通道使用定时器1的CC1事件启动转换,=1110:SWSTART
||+--------=1:使用外部触发信号启动转换
++---------保留*/
ADC2_SQR1=0x00000000;
ADC1_SQR1=0x00000000;/*ADC规则序列寄存器 1
||++++++---SQ13-16=00000:转换序列中第13-16个转换通道编号(5Bits*4)
++---------保留*/
ADC2_SQR3 =0x00000001; //----------------------
ADC1_SQR3 =0x00000000;/*ADC规则序列寄存器 3
||||||++---SQ1=00000:转换序列中的第1个转换通道的编号(0)
+++++++----SQ2-6=00000:转换序列中第2-6个转换通道编号(5Bits*5)
+----------保留*/
ADC2_SMPR2=0x00000000;
ADC1_SMPR2=0x00000000;/*ADC采样时间寄存器 1
|||||||+---SMP01=000(3Bits):使通道00的采样时间 1.5T
||||||+----SMP02=000(3Bits):使通道04的采样时间 1.5T
|+++++++---SMP11-17=000(3Bits*7):通道11-17的采样时间 1.5T
++---------保留*/
ADC1_CR2 |=0x00000001;
ADC2_CR2 |=0x00000001; //ADON=1:开启ADC1、ADC2
ADC1_CR2 |=0x00000008;
while(ADC1_CR2 & 0x00000008);//初始化ADC1校准寄存器
ADC2_CR2 |=0x00000008;
while(ADC2_CR2 & 0x00000008);//初始化ADC2校准寄存器
ADC1_CR2 |=0x00000004;
while(ADC1_CR2 & 0x00000004);//ADC1校准
ADC2_CR2 |=0x00000004;
while(ADC2_CR2 & 0x00000004);//ADC2校准
}
|