HAL Library 13- Buttons for STM32Fxxx

New port. Buttons library for HAL based libraries. It can handle buttons, connected to your STM32Fxxx devices.

It supports basically unlimited number of buttons with different triggering. Currently, callback functions can be called on these events:

  • Button on pressed: Called directly when button is pressed
  • Button normal press: Called when button is released after specific amount of time
  • Button long press: Called when button is pressed for specific “long” amount of time

It uses malloc() to allocate memory, so you have to make sure that your heap is big enough. It also allows you to select state when button is pressed, high or low.

You just have to make sure, that your button is properly connected to STM device with capacitor and pull resistor!


Read more about new HAL libraries


  • Supports buttons connected to STM32F4xx
  • Support different button trigger events


  • HAL
  • TM
    • STM32Fxxx HAL
    • defines.h
    • TM GPIO
    • TM DELAY


Library allows user to change some of parameters in library for button handling. In case you need to change it, I recommend you use defines.h file and edit your defines.

Functions and enumerations


Project is available on Github, download all libraries below.


Owner of this site. Application engineer, currently employed by STMicroelectronics. Exploring latest technologies and owner of different libraries posted on Github.

You may also like...

Read before commenting!

Before you make a new comment, make sure you agree with things listed below:

  • - Read post to make sure if it is already posted what you are asking for,
  • - Make sure you have the latest version of libraries used in your project,
  • - Make a clean and grammatically correct written message,
  • - Report as many details as possible, including what have you done so far,
  • - Do NOT post any code here. Use Pastebin,
  • - Do NOT post any error codes here. Use Pastebin,
  • - Specify STM32Fxxx family and used Discovery/EVAL/Nucleo or custom made board,
  • - Make sure your clock is set correct for PLL,
  • - If you are using my HAL drivers, please check this post how to start.
Comment will be deleted on breaking these rules without notification!