Basics STM32 Development - STM32CubeF7
February 23, 2019
I’m starting again working with microcontrollers. The last time I worked with microcontrollers was almost 5-7 years ago. At that time I used to write assembly code and some C code, but mostly assembly, for Atmel 8-bit microcontrollers. Now things has changed, ARM 32-bit microcontrollers are everywhere and since I have an electrical engineering and computer vision background, I said to myself “dude, I have the knowledge to build really cool stuff”.
Anyway, in this post I will explain the STM32CubeF7 because I bought the STM32F746G-discovery development kit link.
STM32CubeF7 firmware consists in 3 abstraction layers, as shown in the following figure:
- Level 2:
- Applications: User applications based on lower level libraries (level 1, level 0 or both).
- Level 1:
- Middleware: Libraries supporting complex pieces of software such as USB protocol, TCP/IP and Real time operating systems (RTOS).
- Level 0:
- Hardware abstraction layer (HAL): The HAL layer provides the low level drivers and the hardware interfacing methods to interact with the upper level (ADC, UART, SPI)
- Low Layer (LL): Provides APIs at register level. Thus, a good understanding of the microcontroller architecture is needed.
- Board support package (BSP): This layer offers a set of APIs relative to the hardware components in the hardware boards (Audio codec, I/O expander, Touchscreen, SRAM driver, LCD drivers). Of course this package is only useful if you are using a development kit.
- Cortex Microcontroller Software Interface Standard (CMSIS): it is a vendor-independent hardware abstraction layer for Cortex-M processor, and supports of digital signal processing and RTOS.
STM32CubeF7 Package structure
When you download the STM32CubeF7 from the st website and unzip it you will find the following directories:
STM32Cube_FW_F7_V1.14.0/ ├── Documentation │ └── STM32CubeF7GettingStarted.pdf ├── Drivers │ ├── BSP │ ├── CMSIS │ └── STM32F7xx_HAL_Driver ├── _htmresc │ ├── CMSIS_Logo_Final.jpg │ ├── ReleaseNotes.html │ ├── st_logo.png │ ├── STM32Cube.bmp │ └── STM32Cube_components.bmp ├── Middlewares │ ├── ST │ └── Third_Party ├── package.xml ├── Projects │ ├── readme.txt │ ├── STM32746G-Discovery │ ├── STM32756G_EVAL │ ├── STM32CubeProjectsList.html │ ├── STM32F722ZE-Nucleo │ ├── STM32F723E-Discovery │ ├── STM32F7308-DISCO │ ├── STM32F746ZG-Nucleo │ ├── STM32F7508-DISCO │ ├── STM32F767ZI-Nucleo │ ├── STM32F769I-Discovery │ ├── STM32F769I_EVAL │ └── WIN32 ├── Release_Notes.html └── Utilities ├── CPU ├── Fonts ├── JPEG ├── Log ├── Media └── PC_Software
- HAL, CMSIS and BSP libraries are found under
Driversdirectory. Note that both HAL and LL are under
- Middleware libraries are found under
Projectsdirectory is a set of examples organized by board.
That’s all for this blog post, in following post I’ll write about how to work with the ARM microcontrollers without IDEs. I’m still in this journey of embedded systems and ARM 32-bit microcontrollers, so some things might be wrong.