为什么我用4.7V的电源和3.2V的电源供电,采集到的电源电压一直是4.9V呢
采集代码如下
static u8 AD_ADON_Flag=1;//n=0;
u8 i=0,j,k=0;
u16 GetADCVal[10],tmp;
// if(ADC1->CSR&0X80) //不开缓冲区 转换结束的标志位
// {
// ADC1->CSR&=~0X80;//清除
if(AD_ADON_Flag)//通道选择标志位
{
AD_ADON_Flag=0;
// for( k=0; k<10; k++ )//滤波用的
// {
ADC1->CR1 |= 0X01; //启动ADC
while(!(ADC1->CSR&0X80));
ADC1->CSR&=~0X80;//清除
TEMPVal0 = ADC1_GetConversionValue();
//
// }
// for(j=0;j<10;j++)//滤波用的
// for(i=0;i<10-i;i++)
// {
// if( GetADCVal>GetADCVal[i+1] )
// { tmp=GetADCVal; GetADCVal=GetADCVal[i+1]; GetADCVal[i++]=tmp; }
// }
TEMPVal0=(int)(((float)TEMPVal0/1024)*50); //把电压值扩大10倍 50V
ADC_Init(); //初始化AD转换
ADC1->CSR |= 0X01;//切换到通道1
return 0;
}
else
{
AD_ADON_Flag=1;
for( k=0; k<10; k++ ) //滤波用的
{
ADC1->CR1 |= 0X01; //启动ADC
while(!(ADC1->CSR&0X80));
ADC1->CSR&=~0X80;//清除标志位
GetADCVal[k] = ADC1_GetConversionValue();
}
for(j=0;j<9;j++)//滤波用的
for(i=0;i<9-i;i++)
{
if( GetADCVal>GetADCVal[i+1] )
{ tmp=GetADCVal; GetADCVal=GetADCVal[i+1]; GetADCVal[i+1]=tmp; }
}
TEMPVal1=(int)(((float)GetADCVal[6]/1024)*50); //把电压值扩大10倍 50V
ADC_Init(); //AD转换初始化
ADC1->CSR &= ~0X01;//切换到通道0
return 0;
}
|