I need to read a noisy 10 V Hall sensor square wave signal using an STM32 (3.3 V logic).

To reduce the voltage I can use a simple resistor voltage divider, however, I'm not certain how to protect the STM32 from voltage spikes in case the signal source goes over 10 V (or possibly below 0 V?).

I put together this scheme using a 3.3 V Zener diode which seems to work in the simulation, but I'm concerned because other voltage protection circuits involve multiple Zener diodes: [link][1]

Also, I fail to understand why one would use Zener diodes over 'regular' diodes. Can't we just use a 'regular' diode from noisy 3.3 V to 3.3 V so that any excess voltage will flow to the 3.3 V voltage source, instead of a Zener diode from 0 V to noisy 3.3 V?

[![enter image description here][2]][2]


  [1]: https://www.eevblog.com/forum/beginners/0-10vdc-signal-into-3-3v-mcu-adc/
  [2]: https://i.sstatic.net/txGES.png