void Init_AD()//AD初始化
{
CLK_PCKENR2 |= 0x01; //给ADC1喂时钟,否则ADC不工作。
ADC1_CR1 = 0x00 ;
ADC1_CR2 = 0x82; //0..23通道,取样16分频
ADC1_TRIGR1=0x10;//使用内部参考电压
RI_ASCR1=0x00;
ADC1_SQR1=0x80;//DMAOFF
//ADC1_CR3 = 0x56; //24,TS,Vref 通道,取样16分频
}
/********************************************************************/
/* AD采样 14通道4次采样均值 */
/*******************************************************************/
int Value_AD(int k)//AD采样值
{
int Values=0;;
int buff=0;
ADC1_SQR3=0x40;
for(int i =0;i<11;i++)
{
ADC1_CR1=0x03;
for(int j=0 ; j<100; j++);//简单掩饰
while(ADC1_SR_EOC==0x00);//等待采样结束
ADC1_SR_EOC=0x00;//清除采样标志
if(i>0)
{
buff=0;
buff=ADC1_DRH;
buff= (buff<<8)+ADC1_DRL;
Values+=buff;
}
}
ADC1_CR1=0x00;//采样结束
Values=Values/10;
CLK_PCKENR2=(CLK_PCKENR2&0xfe);
return Values;
}我是准备用内部参考电压 但是结果是使用的外部电压 因为外部电压不稳 所以不能用 请哪位大侠帮忙看一下 或者给个例子 |