Hello, and welcome to this presentation of the STM32Cube firmware drivers, including the hardware abstraction layer drivers. While this presentation is specifically about the STM32G4, the STM32Cube comprehensive software tool offers, STM32Cube MX graphical software configuration tool used to generate initialization code based on user choices. A complete embedded software package for each STM32 series, such as our STM32Cube G4Width, hardware abstraction layer, or HAL, and low layer, or LL, APIs. A consistent set of middleware components, RTOS, USB, TCPIP, graphics. The STM32Cube G4MCU package runs on STM32G4 series microcontrollers based on the ARM Cortex-M4 processor. STM32Cube G4 gathers in a single package all the generic embedded software components required to develop an application on STM32G4 series microcontrollers. The package includes low layer and hardware abstraction layer APIs that cover the microcontroller hardware, together with an extensive set of examples running on ST micro electronics boards. The STM32Cube G4MCU package also contains a set of middleware components with the corresponding examples. Full USB device stack supporting many classes. USB power delivery stack. CM-SYS RTOS implementation with free RTOS open source solution. FAT file system based on open source FATFS solution. Several applications and demonstrations implementing all these middleware components are also provided in the STM32Cube G4MCU package. Embedded software is delivered by series like STM32G4, STM32L4, etc. and common modules are covered with fully portable APIs. Embedded software initialization code can be generated through STM32Cube MX, allowing the customer to remain focused on the core application code. The STM32Cube firmware solution is built around three independent levels that interact easily. Level 0 contains the drivers and the HAL. Level 1 contains middleware components and examples based on these components. Level 2 is composed of a single layer which consists in a global real-time and graphical demonstration based on the middleware service layer, the low-level abstraction layer and the basic peripheral usage applications for board-based features. This slide describes the various software components per level. Level 0 has three sub-layers. The board software package which offers a set of APIs corresponding to the hardware components of a board, that is LCD, audio, microSD, and MEMS drivers. The HAL drivers offer high-level function-oriented highly portable APIs. They hide the MCU and peripheral complexity to end user. The low-layer drivers provide low-level APIs at register level with better optimization but less portability. Basic peripheral usage examples. These examples use either the HAL or the low-layer drivers APIs or both. They use the BSP resources as well. Low-layer drivers require a deep knowledge of MCU and peripheral specifications. They are independent from HAL and can be used in standalone mode. Level 1 is divided into two sub-layers. Middleware components, which is a set of libraries covering USB device library, USB power delivery library, free RTOS, and FAT FS. Examples based on the middleware components. Integration examples that use several middleware components are provided as well. Level 2 is composed of a single layer which consists in a global real-time and graphical demonstration based on the middleware service layer, the low-level abstraction layer, and the basic peripheral usage applications for board-based features. Like all STM32-Cube firmware packages, the STM32-Cube G4 firmware solution comes in a single zip file, having the structure shown in this slide. It's organized in several main folders. The documentation folder contains the STM32-Cube G4 getting started document, helping developers to quickly become familiar with the firmware package and its contents. The drivers folder contains all the ST developed drivers, HAL and LL. CM-CIS contains the files defining STM32-G4 XX supported devices, peripheral registers declarations, their associated bit definitions, and address mapping. STM32-G4 XXHAL underscore driver folder contains the drivers for all the peripherals. The drivers for all supported boards are found in the BSP folder. Middleware contains the supported middleware libraries and stacks provided either by ST or third parties. The projects folder contains templates, examples, applications, and demonstrations for supported boards, and with preconfigured projects and specific README files that provide all necessary information for a quick and easy execution. The Utilities folder contains miscellaneous utility drivers that are used by the provided projects. Through its generic architecture, STM32-Cube offers a highly portable hardware abstraction layer or HAL. It allows developers to implement application functions by building on layers such as the middleware layer without requiring any in-depth knowledge of the MCU. This improves the reusability of the library code and guarantees an easy portability to other devices. In addition, thanks to its layered architecture, STM32-Cube G4 offers full support of all STM32-G4 microcontrollers and the development boards designed by ST. The user has only to define the correct macro in the STM32-G4-xx.h file and get in touch with BSP drivers and example or application projects specific to each board provided within the firmware package. For each board, a set of examples is provided with preconfigured projects for EW ARM, MDK ARM, and SW4-STM32 tool chains. The right-side figure shows the project structure for Nucleo G4-31KB board, which is identical for all other boards. The examples are classified depending on the STM32-Cube level they apply to and are named as follows. Examples in Level 0 are called examples. Examples LL and examples MIX, they use respectively HAL drivers. LL drivers and a mix of HAL and LL drivers without any middleware component. Examples in Level 1 are called applications and provide typical use cases of each middleware component. Examples in Level 2 are called demonstration and implement all the HAL, BSP, and middleware components. The template project is provided to quickly build any firmware application for all supported boards. The STM32-Cube project list file allows a quick access and search for a given example within the firmware package. All examples have the same structure. Slash Inc folder contains all header files. Slash SRC folder contains the sources code. Slash EW ARM, Slash MDK ARM, and Slash SW4-STM32 folders contain the preconfigured project for each tool chain. A readme text file describes the example behavior and environment needed to make it work. Note that most of the examples have a .ioc file enabling the configuration of the firmware from Cube MX Tool. Rich documentation is associated to the STM32-Cube G4 firmware package. Some documents are generic to all STM32 series and others are specific to the STM32 G4 series. The getting started with the STM32-Cube G4 firmware package user manual is the document that you need to read first when you start using the STM32-Cube firmware package. The STM32-Cube G4 firmware can be downloaded from ST website at www.st.com slash STM32-Cube FW. This slide summarizes the features of STM32-Cube. You can refer to the related presentation.