STM32Cube MCU Overall Offer
Overview
STM32Cube is an STMicroelectronics original initiative to ease the developers life by reducing efforts, time and cost.
STM32Cube covers the overall STM32 products portfolio (MCU and MPU). It includes a comprehensive embedded software platform, delivered for each STM32 series.
- The CMSIS modules (core and device) corresponding to the ARM(tm) core implemented in this STM32 product.
- The STM32 HAL-LL drivers, an abstraction layer offering a set of APIs ensuring maximized portability across the STM32 portfolio.
- The BSP drivers of each evaluation, demonstration, or nucleo board provided for this STM32 series.
- A consistent set of middleware libraries such as RTOS, USB, FatFS, graphics, touch sensing library...
- A full set of software projects (basic examples, applications, and demonstrations) for each board provided for this STM32 series.
GitHub is a new publication model for the STM32Cube MCU embedded software. Different models of publication are proposed:
- The MCU Package: A unique repo per STM32 MCU series containing the different components of a STM32 MCU firmware (Drivers, Middleware, Utilities, Examples). Please refer to the STM32Cube MCU Packages chapter below.
- The MCU components: Each component of a STM32 MCU firmware (Drivers, Middleware, Utilities) is proposed in a dedicated repo, allowing the user to select and get only the required ones. Please refer to the STM32Cube MCU Components chapter below.
- The X-CUBE: Expansion software proposing examples and applications that complement the ones of the STM32Cube firmware.
- A set of MCU Utilities: Various utility features proposed in dedicated repos.
Please note that a MPU offer is also proposed for the STM32 MPU Products. You can refer to the repo STM32MPU_EmbSW_Overall_Offer.
Description
This repo is a simple Readme describing all STM32 MCU related GitHub projects, the overall offer for the STM32 MCU products.
This new publication channel of the STM32Cube embedded software components will provide new added values:
- In complement to the MCU Package zip files today proposed on st.com, the capability for STM32 customers to get a configuration management based delivery (Git)
- A more direct communication between developers, thanks to the Issues features. Caution: only software related questions will be taken into account. Any other subject must be submitted to the ST Community forum
- Thanks to the deployment of a Contributor License Agreement feature (please refer to each repo CONTRIBUTING guide), the Pull-Request permits also to take into account customers proposed updates and enrich the STM32Cube FW offer.
For general communication and support, you can use
Content
-
STM32Cube MCU Packages
-
STM32Cube X-CUBE
-
STM32Cube Function Packs
-
STM32Cube CMSIS
-
STM32Cube HAL Drivers
-
STM32Cube BSP Drivers
-
STM32Cube MW Libraries
-
STM32Cube Utilities and miscellaneous
STM32Cube MCU Packages
X-CUBE Expansion softwares
The STM32Cube expansion software contains embedded software components that complement the functionalities of the STM32Cube and/or enable the usage of a multitude of ST devices in domains such as of sensing, power management, connectivity or audio, together with the most appropriate STM32 MCUs.
STM32Cube X-CUBE |
Description |
x-cube-aws |
AWS IoT Expansion Package for STM32Cube. |
x-cube-azrtos-f4 |
Azure RTOS Expansion Package for STM32Cube, for STM32F4 series. |
x-cube-azrtos-f7 |
Azure RTOS Expansion Package for STM32Cube, for STM32F7 series. |
x-cube-azrtos-g0 |
Azure RTOS Expansion Package for STM32Cube, for STM32G0 series. |
x-cube-azrtos-g4 |
Azure RTOS Expansion Package for STM32Cube, for STM32G4 series. |
x-cube-azrtos-h7 |
Azure RTOS Expansion Package for STM32Cube, for STM32H7 series. |
x-cube-azrtos-l4 |
Azure RTOS Expansion Package for STM32Cube, for STM32L4 series. |
x-cube-azrtos-l5 |
Azure RTOS Expansion Package for STM32Cube, for STM32L5 series. |
x-cube-azrtos-wb |
Azure RTOS Expansion Package for STM32Cube, for STM32WB series. |
x-cube-azrtos-wl |
Azure RTOS Expansion Package for STM32Cube, for STM32WL series. |
x-cube-ble1 |
BlueNRG-M0 Bluetooth Low Energy Expansion Package for STM32Cube. |
x-cube-ble2 |
BlueNRG-2 Bluetooth Low Energy Expansion Package for STM32Cube. |
x-cube-blemgr |
Expansion Package to set and configure bluetooth connectivity from board to mobile application such as ST BLE Sensor. |
x-cube-eeprma1 |
M24XX I2C and M95XX SPI EEPROMs Expansion Package for STM32Cube. |
x-cube-gnss1 |
Teseo-LIV3F GNSS Expansion Package for STM32Cube. |
x-cube-iota1 |
IOTA Distributed Ledger Technology Expansion Package for STM32Cube. |
x-cube-mems1 |
X-CUBE-MEMS1 Expansion Package for STM32Cube. (X-NUCLEO-IKS01A2, X-NUCLEO-IKS01A3 and X-NUCLEO-IKS02A1) |
x-cube-nfc4 |
Dynamic NFC/RFID tag IC (ST25DV device) Expansion Package for STM32Cube. |
x-cube-sfxs2lp1 |
Embedded software S2-LP Sigfox library and GUI PC application to transmit messages to the Sigfox network. |
x-cube-subg2 |
Sub 1 GHz RF communication for S2-LP Expansion Package for STM32Cube. |
x-cube-tcpp |
USB-IF certified Expansion Package for the integration of TCPPs protection circuits (OV/OC). |
x-cube-usb-pd |
USB-IF certified Expansion Package as USB Type-C port manager (TCPM). |
STM32Cube Function Packs
STM32 Function Packs (FP) are a combination of low-level drivers, middleware libraries and sample applications assembled into a single software package.
You can get the entire list of available Function Packs on st.com: STM32 ODE Function Packs.
The below list represents the Function Packs available on GitHub.com
STM32Cube Function Packs |
Description |
fp-sns-allmems1 |
STM32Cube function pack for IoT node with BLE connectivity. Covers environmental and motion sensors, digital microphone levels, battery level, recording on SD card, voice communication over BLE, sound source localization, acoustic beam forming, real time activity/gesture/motion recognition. |
fp-sns-motenv1 |
STM32Cube function pack for IoT node with BLE connectivity and environmental and motion sensors. |
fp-sns-flight1 |
STM32Cube function pack for IoT node with BLE connectivity to view real-time time-of-flight sensors data. |
STM32Cube MCU Components
As mentioned above, the STM32Cube Components is an alternative delivery model to the STM32 Packages. In this case, each module is delivered as individual repos, allowing the customer to select and download only the pertinent features.
- Components available today: CMSIS - HAL/LL - BSP - Base MW (USB, FatFS, FreeRTOS, LwIP)
- Components upcoming: Other MW - Utilities
In each module README file you will find the cross compatibility information. When all modules will be available a set of new Manifest files (series by series) will be proposed to drive the user.
STM32Cube CMSIS
STM32Cube CMSIS core |
Description |
cmsis_core |
The STM32 CMSIS Core, issued from ARM (tm) publication. Please check the ST_README.md file. |
STM32Cube HAL Drivers
The HAL Drivers MCU Components propose the HAL and LL Drivers modules controlling all the HW IPs embedded in the STM32 products.
-
HAL Drivers:
- A set of portable abstraction APIs offering high level services, built around standalone processes. The HAL drivers are functionalities oriented, example: for the Timer peripheral, the APIs could be split into several categories following the functions offered by the IPs (Basic timer, capture, PWM...) for a communication IP: an initialisation function, eventually a configuration function and data transfer services (polling, interruption or DMA based)
- The compatibility SHALL be guaranteed across all the STM32 families for the generic APIs, including generic macros and common structures defines. Any specific feature is given in a dedicated extension model available in the associated extension files
-
LL Drivers:
- Low Layer Drivers: a set of basic functions with direct hardware access (no standalone process), this layer can be called either by applications or by the HAL drivers.
HAL and LL Drivers are provided in the same module/repo
The dynamic usage of HAL APIs is provided thru projects examples, available in the respective STM32Cube MCU Packages STM32Cubexx where xx correspond to the series
STM32Cube BSP Drivers
The BSP Drivers MCU Components propose the BSP Drivers modules, which are constituted from the:
-
STM32Cube BSP Boards Drivers, based on the HAL drivers, and providing a set of high level APIs allowing a quick access to the boards services (e.g., audio, graphics, access to external memories).
-
STM32Cube BSP Components Drivers providing a set of high level APIs allowing a quick access to the (e.g., audio codecs, LCD drivers, SD cards, MEMS). The link between these external components and the HAL drivers (e.g., a SD card and the
OSPI
/QSPI
HAL driver) is done within the BSP Boards drivers.
NOTE: A number of BSP components drivers (particularly of MEMS) come in two forms, each addressing a different purpose. For each one of such BSP components drivers, two repositories are available as explained below:
-
PID: Platform-Independent Drivers. Recognizable to their repositories' names <bspcomp> (e.g., hts221). Are low-level drivers allowing direct access to components' registers. These drivers are independent of any software platform, as the acronym PID suggests. The complete list can be found here.
-
STM32: STM32Cube-compatible drivers. Recognizable to their repositories' names stm32-<bspcomp> (e.g., stm32-hts221). Are hardware-abstracted drivers, specially designed to be compatible with the STM32Cube software offer, as the stm32-
prefix suggests. The complete list is provided below (refer particularly to tables MEMS
and Temperature Sensor
).
STM32Cube BSP Boards Drivers
STM32Cube BSP Components Drivers
STM32Cube BSP Magnetometer Components Drivers |
Description |
stm32-iis2mdc |
The IIS2mdc BSP Component Driver |
STM32Cube BSP Temperature Sensor Components Drivers |
Description |
stm32-stlm75 |
The STLM75 BSP Component Driver |
stm32-stts22h |
The STTS22H BSP Component Driver |
stm32-stts751 |
The STTS751 BSP Component Driver |
STM32Cube Middleware Libraries
The Middleware Libraries MCU Components propose the following set of stacks common to all STM32xx series very useful to design number of middleware-based user applications.
These Middleware Libraries delivered in standalone mode, permit to get in advance, compared to the full FW Packages, the new features or updates. Please take a look to the Release Note to verify the compatibility information.
-
FatFS library: A set of platform- and storage device-independent services allowing user application to access storage devices and manage files.
-
FreeRTOS library: A set of platform-independent services implementing a real-time operating system kernel for embedded devices and providing methods for multiple threads or tasks, mutexes, semaphores and software timers.
-
LwIP library: LwIP (Lightweight IP) is an open-source TCP/IP stack designed to reduce resource usage while still offering a full-scale TCP stack. Among other services, it also offers a network interface, buffers and a memory management section, and an operating system emulation layer.
-
USB Device library: A set of services allowing the configuration and the control of the USB on STM32 MCUs in device mode. It is mainly based on the "Core" and the "Class" modules including the common and most used features and APIs.
-
USB Host library: A set of services allowing the configuration and the control of the USB on STM32 MCUs in host mode. It is mainly based on the "Core" and the "Class" modules including the common and most used features and APIs.
-
Open Bootloader library: An In-Application programming (IAP) utility based on the HAL-LL drivers and providing a set of services in order to perform all possible Bootloader operations. It is provided as an example that can be tailored and customized.
The dynamic usage of Middleware Libraries is provided thru projects examples, available in the respective STM32Cube MCU Packages STM32Cubexx where xx correspond to the series. Additionnal projects examples are also available under stm32u5-classic-coremw-apps.
Examples and applications showing how to use the above libraries are available in the following repos.
STM32Cube MW Applications |
Description |
stm32u5-classic-coremw-apps |
Applications based on ST USB Device, ST USB Host, FreeRTOS, FatFS, and LwIP libraries for STM32U5 series. |
stm32l5-openbl-apps |
Applications based on the Open Bootloader library for STM32L5 series. |
stm32wb-openbl-apps |
Applications based on the Open Bootloader library for STM32WB series. |
stm32wl-openbl-apps |
Applications based on the Open Bootloader library for STM32WL series. |
STM32Cube Utilities and Miscellaneous repos
Repository |
Description |
stm32-external-loader |
Flashloaders source code of external memories embedded in the STM32 HW boards. |
stm32ai |
Open source AI offer in STM32 products. |
STM32_open_pin_data |
This repo provides all the information required for the pin and board configuration of products based on STM32 MCU. |