Trace: » stm32.html
Table of Contents

[hemmerling] STMicroelectronics ARM-based MPUs

Company & Products & Community

Company & Products



      • 2016-01-25, 8:00 CET - 2016-01-29, 17:00 CET → I registered.
      • 2016-04-04, 8:00 CET - 2016-04-08, 17:00 CET → I registered.
      • 2016-06-13, 8:00 CET - 2016-06-17, 17:00 CET.
    • STM32F7 online course, with hands-on exercises.
      • 2016-02-08, 8:00 CET - 2016-02-12, 17:00 CET → I registered.
      • 2016-03-14, 8:00 CET - 2016-03-18, 17:00 CET.
      • 2016-05-23, 8:00 CET - 2016-05-27, 17:00 CET → I registered.


  • As of 2017-10, if you don´t get a confirmation for participating in a free German STMicroelectronics workshop,
    • Call by phone the German office “STMicroelectronics GmbH, Bahnhofstraße 18, D-85609 Aschheim, +49 89 460060” and negociate, that you may send your confirmation wish by E-Mail to


STLink ( ST-Link ) Link Utilities

USB drivers for Link Utilities

  • STMicroelectronics "STSW-LINK009" - “ST-LINK, ST-LINK/V2, ST-LINK/V2-1 USB driver signed for Windows7, Windows8, Windows10”. Current version of ST-Link USB drivers in 2016-10.

Software Design Support Concepts

System Workbench for STM32 ( SW4STM32 )

STM Studio ( STMStudio )

    • “STM Studio run-time variables monitoring and visualization tool for STM32 microcontrollers” → Access to MPU registers, e.g for touch applications.
    • “STMStudio requires the Java Runtime Environmen version 7 at minimum (32bit version preferred)”

STM32Cube ( formerly: MicroXplorer )

The Tool

  • The free software
    • STMicroelectronics "STM32CubeMX - STM32Cube initialization code generator (UM1718)" - “STM32CubeMX is an extension of the existing MicroXplorer tool”.
      • Tools:
        • STM32CubeMX, a configuration tool for any STM32 device. This easy-to-use graphical user interface generates initialization C code for Cortex-M cores and generates the Linux device tree source for Cortex-A cores.
        • STM32CubeIDE, an Integrated Development Environment. Based on open-source solutions like Eclipse or the GNU C/C++ toolchain, this IDE includes compilation reporting features and advanced debug features. It also integrate additional features present in other tools from the ecosystem, such as the HW and SW initilialization and code generation from STM32CubeMX.
        • STM32CubeProgrammer, a programming tool. It provides an easy-to-use and efficient environment for reading, writing and verifying devices and external memories via a wide variety of available communication media (JTAG, SWD, UART, USB DFU, I2C, SPI, CAN, etc.).
        • STM32CubeMonitor family of tools. Powerful monitoring tools that help developers fine-tune the behavior and performance of their applications in real time.
      • Packages:
        • STM32Cube MCU and MPU packages, dedicated to each STM32 series. Packages offer all the required embedded software bricks to operate the available set of STM32 peripherals. They include drivers (HAL, low-layer, etc.), middleware, and lots of example code used in a wide variety of real-world use cases.
        • STM32Cube expansion packages, for application-oriented solutions. Complementing and expanding the STM32Cube MCU Package offer with additional embedded software bricks, STM32 expansion packages come either from ST or approved partners to create an extensive and scalable embedded software offer around the STM32.

GitHub Repository

Eclipse Plugin

Necessary Add-Ons

  • To operate STM32Cube, you need both.
    1. Compiler / IDE support, so that the code generated by STM32Cube may be compiled ( “Project Settings / Toolchain/IDE” ).
      • Targets:
        1. EWARM - IAR 7.40 is shipped with STM32Cube support. No extras must be installed.
        2. MDK-ARM V5 - Keil MDK 5.40 needs a MDK5 Software Packs for each board, e.g. “KeilSTM32F4xx_DFP.?.?.?.pack”, “KeilSTM32L0xx_DFP.?.?.?.pack”.
        3. TrueSTUDIO.
        4. SW4SM32 - The generated code is for the free “System Workbench for STM32”.
          • For STM32Cube project, be shure to set the language standard to C99.
            • Project name - mouse rightclick, “Properties / C/C++ Build / Settings / MCU GCC Compiler / Dialect”.
            • Select “ISO C99 (-std=c99)” as “Language standard”.
        5. Em::Blocks, inoffically.
          • The generated code for TrueSTUDIO SW4SM32 and is for GNU C/C++ compiler. I was told by experts that the generated code may be compiled with the OpenSource IDE “Em::Blocks” → See ARM Embedded Systems ( ARM7, ARM8, ARM9, ARM11, Cortex ). How to proceed:
            1. Set the right target ( “Project / Settings / Project / Toolchain/IDE” ) - “TrueSTUDIO” or “SW4STM32”.
            2. Let STM32CubeMX generate the code ( “Project / Generate Code” ).
            3. Create an empty “Em::Blocks” project.
            4. Delete files and directories:
              1. Delete the directories of the “Em::Blocks” project.
                • cmsis.
                • incl.
                • SPL.
                • src.
              2. Delete the two GNU linker scripts ( “*.ld” ) of the root directory of the “Em::Blocks” project.
            5. Copy files and directories:
              1. Copy the directories of the code generated by STM32Cube to the “Em::Blocks” project directory:
                • Drivers.
                • Inc.
                • Src.
              2. Copy the GNU linker script, e.g. “TrueSTUDIO\gpio\STM32F429ZI_FLASH.ld” of the STM32CubeMX project to the root of the of the empty “Em::Blocks” project.
            6. Delete files and directories:
              1. Delete the directories of the the “Em::Blocks” project:
                • “Drivers / CMSIS / Device / STM32F4xx / Source / Templates / arm”.
                  • If you include these files by error in your project, you will get the error message “Drivers\CMSIS\Device\ST\STM32F4xx\Source\Templates\arm\startup_stm32f427xx.s:1: Error: junk at end of line, first unrecognized character is `*'” :-(, as the GCC Assembler just support C/C++ style comments ( ”/ /” and ”/* .. */” ), but not the traditional Assembly comment style ”;”.
                • “Drivers / CMSIS / Device / STM32F4xx / Source / Templates / iar”.
            7. Load the “Em::Blocks” project.
              1. Right-mouseclick “Remove Files”, “Multiple Selection” → (ok).
              2. Right-mouseclick “Add files recursively”, “Multiple Selection” → (ok), “Select the targets this file should belong to” → (ok).
              3. At “Drivers / CMSIS / Device / STM32F4xx / Source / Templates / gnu”, exclude all files with the exception of the proper startup file ( e.g. “startup_st32f427xx.s” from the project, by marking the files, mouse-rightclick “Remove files from project”.
              4. Exclude the file “Drivers / STM32F4xx_HAL_Driver / Src / stm32f4xx_hal_msp_template.c” from the project - “This file contains the HAL System and Peripheral (PPP) MSP initialization and de-initialization functions. It should be copied to the application folder and renamed into 'stm32f4xx_hal_msp.c'”.
              5. At “Project / Build options / Compiler settings / #defines” add the symbol name for your MCU, e.g “STM32F429xx”, as suggested in the file “Drivers / CMSIS / Device / ST / STM32F4xx / Include / stm32f4xx.h”. If you fail, the compilation breaks by the error message '#error “Please select first the target STM32F4xx device used in your application (in stm32f4xx.h file)”'.
      • Tips & tricks:
        • There are two kind of “*.ioc” files:
          • The original “*.ioc” one is that which contains the ST32Cube project. In the root of each created code export directory, another “*.ioc” file is stored.
            • With the original “*.ioc” file, you may set a path to export code.
            • With the exported “*.ioc” files, this option is grayed.
          • Loading the exported “*.ioc” file and republishing code by “Project / Generate Code” is not suggested ( neither for another target compiler, nor for the same target compiler ). If you republish a second ”.iot” file for with SW4SM32, the code still compiles successfully, but the project configuration information is corrupt:
            • In the debug configuration settings, you can´t set the name of the project anymore - the “current” project is not offered as choice.
            • By this, the transfer to the target by the GDB debugger fails by an error message of the GDB debugger.
        • Minimum project configuration by STM32Cube:
          • “Sys / Debug” option with “Serial Wire Debug (SWD)” - If you forget, you won´t be able to debug the software.
          • “Project / Settings / Code Generator / HAL Settings” - ”[ ] Set all free pins analog (to optimize the power consumption)”.
        • There are 2 reporting options:
          1. “Project / Generate Report” generates a PDF.
          2. “Pinout / Generate CSV pinout text file”.
        • To use the “High Speed External” ( HSE ) clock, you just define a pin at “Reset & Clock Control” ( RCC ).
        • “GPIO Maximum Output Speed” ( STM term ) = “Slew Rate” ( usual engineering term ).
    2. Hardware support for a board, by STM32Cube.


  • The USP feature of STM32CubeMX is the interactive “Clocktree Overview” chart.
  • The Assembly code generated by STM32Cube requires the generated GNU linker script.
  • Be shure to understand the difference between ”.S” ( may contain preprocessor commands, e.g. C-style comments ) and ”.s” files with GCC.


Tools for NFC

Tools for NFC 2017 Workshop

TouchGFX - Your Free Graphical UI Tool in the STM32 Ecosystem

Libraries & Frameworks

The legacy Standard Periphal Library

Hardware Abstraction Layer ( HAL ) & Low Level Library

Hardware Abstraction Layer ( HAL )

  • HAL libraries makes use of:
    • Trap handlers.
    • Calbacks.
  • With the HAL library, the library takes care of necessary timing to access hardware and wait for response signals.

Low Level Library

  • With the LL library, the software developer is responsible for timing.
  • It is the successor of the SP library, for boards & MCUs with low resources ( RAM, Flash ROM,..).


emWin, STemWin


MCUs with LoRa Support




  • The DISCOVERY boards includes an ST-LINK/V2 embedded debug tool interface that is supported by the following software toolchains: IAR, KEIL, ATOLL ( so you don´t need to buy a ST-Link/V2 ).
  • DISCOVERY boards are a small application with as much sensors and actors as you can, while the NUCLEO board are in Arduino format, a base frame without (much) sensors and actors.

1. My STM32 Value Line Discovery Board -> STM32F100RB, based on Cortex M3

2a. My STM32L-Discovery Board -> STM32L1, based on Cortex M3

2b. My STM32 L1 Discovery Special Edition Board -> STM32L152RTC6, based on Cortex M3

3. My STM32 F3 Discovery Board -> STM32 F3, based on Cortex M4

4. My STM32 F4 Discovery Board -> STM32F4, based on Cortex M4

5. My STM32 F4 Discovery Board -> STM32F429, based on Cortex M4

6. STM32 M24LR Discovery Board -> STM32F103CB, based on Cortex M3

7. Nucleo Boards


The M24SR Ecosystem

7.1 My STM32L053R8 Nucleo -> STML053R8T6, based on Cortex M0+

  • “STML053R8T6” MCU with 64 KBytes of Flash, 8 Kbytes of SRAM.
  • Similar board: mbed "ST Nucleo L152RE".
  • Software for this board can be compiled by the free online development system mbed.
  • The board is in Ardunio format. Additionaly to the standard Ardunio interface, it has extra ST interfaces.

7.2 My STM32L476 Nucleo-64 -> STML476RG, based on Cortex M4

7.3 My STM32F207 Nucleo-144 -> STMF207ZGT6, based on Cortex M3

7.4 My NUCLEO-F303ZE Nucleo-144 -> STM32F303ZE, based on Cortex M4

7.5 My P-NUCLEO-LRWAN1 Nucleo with LoRa RF Extension -> STM32L073RZT6, based on Cortex M0+

7.6 My P-NUCLEO-IHM001 Nucleo Pack FOC and 6-step motor control -> STM32F302R8, based on Cortex M4

  • "P-NUCLEO-IHM001" - “Motor Control Nucleo Pack with NUCLEO-F302R8 and X-NUCLEO-IHM07M1”.



9. My STM32L053 Discovery -> STML053R8T6, based on Cortex M0+

10. My STM32F746G Discovery -> STM32F746NG, based on Cortex M7

11. My STM32 LoRa Discovery -> STM32L072CZY6TR, based on Cortex M0

  • STM32Cube “STM32L4”, “STM32L4x6”, “LQFP100”, “STM32L476VGTx”.
  • By the windows executable application “qspieraser.bin”, you can delete the USB flash disk more quicky, than by accessing the Windows explorer.
  • Remember that the evaluation board is not intended to be an audio player, i.e. the Flash memory is not intended for frequent data changes, like by copying new audio files to the file system.

12. My 32L476 Discovery -> STM32L467VGT6, based on Cortex M4

13. My IoT tracker node kit

14. My STEVAL-IDB008V2 Discovery Board & My STEVAL-FKI868V2 Board

STEVAL-IDB008V2 Discovery Board

  • STMicroelectronics "STEVAL-IDB008V2" - “Evaluation platform based on the BlueNRG-2”.
  • Smartphone App
  • Software.
    • armKEIL "STMicroelectronics BlueNRG-2" - “Device Family Pack. STMicroelectronics BlueNRG-2 Series Device Support”.
    • STMicroelectronics "STSW-BLUENRG1-DK" - “The STSW-BLUENRG1-DK evaluation SW package is based on the BlueNRG-1 and BlueNRG-2 very low power Bluetooth low energy (BLE) single-mode systems-on-chip with 160 KB and 256 KB of Flash memory, respectively, 24 KB of RAM, 32-bit core ARM Cortex-M0 and ADC, GPIOs, I²C, RTC, SPI, Timers, UART, WDG and RTC peripherals”.
    • STMicroelectronics "STSW-BNRGUI" - “The STSW-BNRGUI software package consists of a graphical user interface (GUI) PC application that can be used to interact and evaluate the capabilities both of the BlueNRG and BlueNRG-MS Bluetooth low energy network processors, which are low power Bluetooth® Smart ICs, compliant with the Bluetooth specifications. It also supports the BlueNRG-1 and BlueNRG-2 Bluetooth low energy systems-on-chip: low power Bluetooth smart ICs that are compliant with the Bluetooth® specification, both in master and slave roles”.
    • “Window10 driver installation issues”.
      • PDF document “Window10 driver installation issues. Users of Windows 10 –issue with BlueNRGand S2-LP driver installation. Issue linked to signed driver enforcement policy on Windows 10”.
        • How can I install drivers that are not digitally signed? Windows 10 enforces driver signatures by default. This can be disabled to install drivers that are not digitally signed. Use the following steps to disable driver signature enforcement.
          1. Click the Start Start menu and select Settings.
          2. Click Update and Security.
          3. Click on Recovery.
          4. Click Restart now under Advanced Startup.
          5. Click Troubleshoot.
          6. Click Advanced options.
          7. Click Startup Settings.
          8. Click on Restart.
          9. On the Startup Settings screen press 7 or F7 to disable driver signature enforcement.
        • Your computer will restart and you will be able to install non-digitally signed drivers. If you restart your computer again the driver signature enforcement will be re-enabled.


15. Motor Control Kits

16. Boards with STM32F4 MCUs for .NET Micro Framework and .NET Gadgeteer

Appropriate OpenDirectory Directory Pages

en/stm32.html.txt · Last modified: 2023/11/30 21:57 (external edit) · []
Recent changes RSS feed Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki