ADC_ClearFlag(ADC1,ADC_FLAG_EOC);
//ADC_ClearFlag(ADC1,ADC_FLAG_EOSEQ);
ADC_StartOfConversion(ADC1);
//while(ADC_GetFlagStatus(ADC1, ADC_FLAG_EOSEQ)==RESET);
//while(ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC)==RESET);
while (!(ADC1->CR & 0x04));
atomizevalue[idx] = ADC_GetConversionValue(ADC1);
watchvalue = atomizevalue[idx];
程序总是死在判断EOC标志置位的地方,
单步调试时,执行完ADC_StartOfConversion(ADC1);
查看ADC的寄存器CR,发现EOC EOSEQ都置位了,然后f10,
瞬间EOC就清除了,我真是服了,我一没软件写1清除,2没读数据,EOC标志还会自动清除的吗?
我采用的软件触发单通道单次采样,每次发一次start命令才会触发一次ADC.
请求路过的大神指点下,手册上难道遗漏了? |