https://aticleworld.com/stm32-gpio-button-and-led-control/