Continuousmode off means there is one sampling & conversion. So it enters ISR andthen stops u need to trigger ADC once again by usingADC_SoftwareStartConvCmd(ADC1, ENABLE); .

Continuousmode on it triggers interrupt on each (group) conversion done. Conversions are made in infinite row.Going more deeply according that you are using 72Mhz clock your ADC clock is:

RCC_ADCCLKConfig(RCC_PCLK2_Div8);

72Mhz / 8 =9Mhz

totalconversion cycles = 1,5 (ADC_SampleTime_1Cycles5) + 12,5 cycles

totalconversion time = 14 * 1/9Mhz = 1,(5) us

So each1,5us you have new value and EOC flag is set. More or less its very short timeand you need to do all your math in this time otherwise next eoc flag is setand may not enter main loop at all. Let’s mention that interrupt latency is 12cycles.

Do youreally need that frequent short time sampling? I bet you want short timesampling but not that frequent than use that continuous mode for sake of simplicityand additional timer to read values. Don’t use EOC flag.

The programm doesn´t enter never in main if. In debug mode in step by step mode, as soon as the ISR finishes, the program enters again. If it would works ok, it must enter in it.

If i have ADC_CR2.CONT=0 Continuous mode OFF
The programs enters once in the ISR and stop. It enters with out EOC flag(??)
It works like it must to do. I tried to start ADC conversion on ISR then but i cant.
How could do i that?

If i have ADC_CR2.CONT=1 Continuous mode ON
The programs never leaves the ISR (Even step by step in debug mode). It never enters in main If. In normal mode I think it must do it. It enters with EOC flag

It's still only 56 cycles but you should be able toquit isr and jump to main loop. Did you set a trap in main loop to check if itsreally not going into there?. Also try increasing conversion time tocheck if its not really I am to slow in ISR problem.

Thks to all for solve my Micro-headache. Well it wasn´t so micro, it was a bigger one

My conclusions are the following ones:

I was whole week trying to do:

I wanted to start the adc first with software only to do a first aproximation. I only wanted to enter in the ADC ISR and get able to turn off the EOC flag. It was my painfull error.
It was imposible to do it by this way.I tried first to work on CONTINUOUS mode, but it never leave the ISR because i cant clear EOC.
The second try was to work on DISCONTINUOS and Restart the ADC in ISR. I didn´t get any results.

Thks to litom that give me the key.
I configured the ADC with TIMER3 external trigger. I configure the TIM3 with a 20KHz frecuency and then my code left correctly the Diabolic ISR.

3.Setup compare registers to trigger interrupt close to end of timer periodand start adc conversion.

4.On timer updateevent or EOC read analog value and do whatever you want with this probablysetup another compare register to get desired pulse shape.

Even more easy if you don’t need sampling in exactperiods of time. Run ADC in continuous mode forget about EOC flag and readvalue at the beginning of timer update event.

First scenario is also not time accurate too becauseyou need to fire up conversion. As for timers I know there can be made hardwaresynchronization and I bet ADC is able to be externally triggered read docs ifyou need this kind of accuracy.