rss feed
< more posts

Basics STM32 Development - STM32CubeF7


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.

Abstraction layers

STM32CubeF7 firmware consists in 3 abstraction layers, as shown in the following figure:

STM32CubeF7 firmware abstraction layers

  • 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 Drivers directory. Note that both HAL and LL are under STM32F7xx_HAL_Driver directory.
  • Middleware libraries are found under Middlewares directory.
  • Projects directory is a set of examples organized by board.

Final words

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.


Wanna talk?. Send me a mail.
Did you enjoy it?.
Similar Posts