Reading a negative and positive voltage from an STM32F4 ADC
I wouldn't choose this tack, because  the negative-going signal would not be within the range of allowable input signals on your microcontroller.  Note that for the STM32f405 the absolute minimum input for a 5V tolerant pin is \$V_{SS} -0.3\$.

The way this is done is to offset the input signal to be  midrange for zero input, attenuating if necessary.

Note in your circuit, the inverting gain is -1 and the noninverting gain is +2.

I see your need for accuracy, but suggest that if you can't handle a factor of two that attenuation would give you, you should be looking at your signal chain, perhaps considering a higher bit A2D.

An alternate method would be to use a precision rectifier to make the signal positive, and a comparator, read on a digitial input, to tell you if the signal is positive or negative.  This might be more disturbing to your signal chain than the offset and attenuation.