For many embedded system developers, the STM32 series from STMicro can be considered a familiar MCU. One important reason for this is the use of ARM Cortex core and the stability of various peripherals, but the fact that the development environment, including IDE tools and flash download tools, can be used for free, also helps users in their decision-making process.

In addition, the availability of abundant examples that many users use and the existence of tutorials or blogs to refer to online are also reasons why people choose the ST MCU.

However, it is also true that many users face difficulties in fine control.

For these reasons, at twareLAB, reusable functions based on our internal development experience have been library-ized to shorten the development period without repeating difficulties in the next development project. In this process, we developed the libtwlab_stm32f4.a library for STM32F4, which we share to help developers who want to use STM32F4.

Basic Structure

libtwlab_stm32f4.a is for STM32F4 series MCU

The target MCU for libtwlab_stm32f4.a is the STM32F4 series. The basic structure is written in CPP, not C. The reason for using CPP is to create a minimal basic class for validation and to inherit and extend the class as needed. Additionally, the overloading feature of CPP is effective for using the same function name with different parameters, depending on the customer's needs.


  • STMCubeIDE v1.11.0 or higher
  • STMCubeProgrammer v2.12.0 or higher
  • STlink or Nucleo Board (for binary downloading)
  • TW100PC-EVB from twareLAB TW100PC-EVB

Blog Post Outline:

  1. Composition of libtwlab_stm32f4.a
  2. Creating a CPP project in STMCubeIDE
  3. How to add libtwlab_stm32f4.a library to STMCubeIDE
  4. [Example 1] GPIO Blinking
  5. [Example 2] How to output Debug Messages Using UART DMA
  6. [Example 3] Setting up a Timer
  7. [Example 4] How to create User Task and User Timer
  8. [Example 5] How to create a Multiple GPIO Control Task
  9. [Example 6] How to create a Multiple ADC Control Task
  10. [Example 7] How to read/write an EEPROM with I2C
  11. [Example 8] Using WIZnet W5500 with SPI DMA
  12. [Example 9] How to create an AT Command Task
  13. Other topics


Leave a Reply

Avatar placeholder

Your email address will not be published. Required fields are marked *