Eigentlich ist aber nicht nach "welchem Compiler für STM32" gefragt,
sondern nach einer Entwicklungsumgebung.
Compiler: Sicher gibt es ein paar Unterschiede zwischen GNU, ARM/Keil
und IAR. Ist aber nichts dramatisches. Der freie Compiler aus
GNU-Quellen (enthalten in CS G++ lite, Yagarto, DevkitARM...) ist
ordentlich. Hat man erstmal die Zusammenhänge verstanden, ist der
Hersteller des Compilers nicht mehr so wichtig. Habe mit IAR sehr wenig,
ARM/Keil wenig und mit dem GNU Compiler viel gemacht, bisher nichts
gefunden, was nicht angepasst werden konnte. Viele Hersteller, auch STM,
bieten inzwischen Beispielcodes, für die drei Compiler (gelegentlich GNU
"versteckt" hinter Attolic, Codesourcery, RIDE, Crossworks).
Arbeite selbst bei ARM-Entwicklungen fast ausschließlich mit
Eclipse/makefiles/GNU-Compiler/OpenOCD. Kann aber für den Einstieg die
Evaluierungs-Version von MDK-ARM/uVision empfehlen (Beschränkung bei
Compiler/Debugger/Simulator auf 32kB(?)). Nicht wegen des Editors,
Compiler oder Debuggers, die gibt es woanders genauso gut oder besser,
sondern wegen des integrierten Simulators, der auch Peripherie (z.B.
Interrupt-Controller, UART, Timer, GPIO) simuliert. Damit kann man die
ersten Schritte ganz ohne Hardware machen (kein Flashen, keine
In-System-Debugging...). Hat man auch hier die Zusammenhänge verstanden,
bietet uVision auch die Möglichkeit einer 'sanften' Migration zu
freien/kostenlosen Tools, sofern man sich die Vollversion nicht leisten
kann oder will. Die IDE wird beibehalten und statt des Compilers von ARM
der GNU-Compiler genutzt, den uVision ebenfalls unterstützt
(Beschränkung weiterhin bei Debugger/Simulator). Später kann man dann
auf Entwicklungsumgebungen mit netterem Editor (z.B. Eclipse evtl. mit
den Attolic-Erweiterungen) und unbeschränktem In-System-Debugging
umsteigen (z.B. Eclipse-Debug-View + OpenOCD od. JLINK-gdbserver).