if(!(ADC_CSR&(1<<7)))return;//没有转换完返回
ADCValue = ADC_DRL;
ADCValue |= ADC_DRH << 8;//读值
ADV += ADCValue;
ADC_CSR &= 0x7F;
wdt_reset();
if(ADCunter < 63)
ADCunter ++;
else
{
ADCunter = 0;
switch(ADStep)
{
case 2:
PowerVolt = ((float)ADV/65536) * 3.5;
break;
case 3:
Usb2Volt = ((float)ADV/65536) * 3.5;
break;
case 4:
Usb1Volt = ((float)ADV/65536) * 3.5;
break;
default:
break;
}
wdt_reset();
if(ADStep < 4)ADStep ++;
else ADStep = 2;
ADV = 0;
}
wdt_reset();
ADC_CR1 = 0x00;
ADC_CR2 = 0x08;//数据右对齐
ADC_CSR = ADStep;
ADC_TDRL = 0x3f;//禁止施密特触发
ADC_CR1 = 0x21;//
Delay_us(10);
ADC_CR1 |= 0x01;
|