本帖最后由 zhxingyu 于 2014-1-1 22:53 编辑
现在在用STM8S003F3芯片,用到三路单次AD转换输入,一路是测量主电源的(5.5V),另外两路分别是通过连接手机的USB接口测量电池电压的,没有连接到手机时,都正常,当连接到手机或拔掉手机时,单片机即刻复位重启,或在连接上手机后,也会随意性的复位重启。我 怀疑是在插拔手机时有瞬间脉冲输入到IO口致单片机复位吗?但也不太肯定,第一次用到这个芯片,请高手支招。谢谢!以下是我的代码:
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;
|