Arseni Aliakseichyk
Embedded and Infrastructure Engineer
STM32F4 Peripheral Firmware Development
Register-Level Firmware on STM32F411 & STM32F407 via LL Drivers
Personal • 2024 – 2025A collection of firmware projects on the STM32F4 family. The main working board is the STM32F411 (Nucleo / Black Pill class), chosen for its compact form factor and lower power draw. The STM32F407VGT6 Discovery was introduced to me during training at GlobalLogic Poland and is the board I use primarily as a learning platform for peripheral exploration.
My deliberate choice on both boards is the ST Low-Level (LL) driver library together with CMSIS - not HAL. STM32CubeMX is used only for the initial clock tree configuration (PLL setup, SYSCLK source, peripheral clock dividers); the generated project is stripped down to the LL headers + startup + linker script, and every peripheral from that point on is configured and driven directly from application code through LL calls. This gives register-level control and determinism without writing the full bit-banging boilerplate by hand.
Key Features
- Boards: STM32F411 (main working board) and STM32F407VGT6 Discovery (GlobalLogic training / learning platform)
- Driver stack: LL drivers + CMSIS from application code - no HAL abstraction layer in the runtime path
- Toolchain: STM32CubeMX used only for clock init; builds via STM32CubeIDE / arm-none-eabi-gcc
- GPIO configuration through LL + direct register access where useful
- Timer-based PWM generation for motor and LED control via LL_TIM
- NVIC interrupt handling for event-driven firmware
- SPI, I2C, and UART peripheral communication via LL
- ADC/DAC analog signal processing via LL
- Hardware debugging with LA1010 logic analyzer and oscilloscope via JTAG/GDB