All STM32 HAL libraries

In this section, I will write all libraries based on HAL drivers from ST.

If you see this first time, make sure you read this post first about how structure of my libs looks like!


All my softwares are published under MIT license. This means that you are allow to modify, share and use my source and other stuff in personal or commercial use. If you modify source code, it has to stay under GNU GPL v3 license too. I reserve a right to shut down this website at any time.

If you want, you can make a donation to my Paypal account and support my work in future. Paypal link is below.



All examples for Keil uVision can be downloaded from my Github repository.

Libraries API

I’ve added doxygen documentation on my site for HAL based libraries. It is available on this link where you can find descriptions for used functions in my libraires.

All libraries

Libraries listed below are currently tested on F7 and F4 series and works OK. If you find any bug, please report it to me.

I’m not responsible for any damage you will do using my libraries. You at your own risk!

RCC For setting up clock control for your board, supporting internal or external clock, support for enabling I and D cache for F7 series.
GPIO For controlling GPIO pins.
DELAY For delay functions using Systick and DWT counter
EXTI For external interrupts in GPIO pins
DISCO For leds and buttons on STM32Fxxx boards
ONEWIRE For onewire based devices like DS18B20
DS18B20 For controlling/reading DS18B20 temperature sensor
USART For communication with UART protocol
SPI For SPI communication
GENERAL General library for different stuff
CRC CRC calculation unit
SDRAM Fir SDRAN communication on F429-Disco, F439-Eval and F7-Disco boards
LCD Single library for F7-Disco, F439-Eval and F429-Disco LCD boards using LTDC and DMA2D
BUTTON For controlling multiple buttons
FFT For FFT calculations
HD44780 For LCD display
I2C For I2C communication
IWDG For independent watchdog timer
RNG For true random number generator
CPU LOAD For measuring CPU load using sleep mode and DWT counter
FATFS For interfacing SDCARD with SDIO/SDMMC or SPI communication interface
USB USB Host and Device library
BOR For setting brown-out detection levels
TOUCH For controlling touch on F7-Disco and F439-Eval boards
RTC For internal Real-Time-Clock timer
NRF24L01+ For 2.4GHz NRF24L01+ transceiver
PVD Power voltage detector for STM32Fxxx
IDENTIFICATION Detect used STM32Fxxx device where program is running
DAC Output analog voltage
ADC Read analog voltage
MPU6050 Operate with MPU6050 accelerometer and gyroscope
DMA Operate with MPU6050 accelerometer and gyroscope
USART DMA Operate with MPU6050 accelerometer and gyroscope
SPI DMA Operate with MPU6050 accelerometer and gyroscope
DSP FILTERS For DSP signal processing
GPS For reading GPS module
AHRS IMU For calculating roll, pitch and yaw values from motion sensor
STRING For creating strings
ROTARY ENCODER For controlling up to 16 rotary encoders using external interrupts
AM2301 For temperature and humidity sensor (DHT-21)
SSD1306 For controlling SSD1306 LCD driver via I2C

Download libraries

Download is available in a single pack for all libraries. There will be no single downloads.


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!