The behavior of your LED seems normal!
In embedded design, LED are usually and voluntary inverted. Doing this will avoid the GPIO pin to provide the current by itself, the LED current will be supplied by the power directly.
VCC |------|>|-----^v^v^v----------< GPIO |
If GPIO is set => no current
if GPIO is unset => current from VCC to the GPIO, no current provided by the stm32!
The LED is "active low".