Hi! Cool to have you here :) This is a follow-up assignment to the Intro to CMake you had in the previous semester. Here you will learn to set-up your own development environment using nothing but the (CMSIS-)bsp1, hal library2, CMake, segger tools and the arm-gcc compiler. Because we want to see your creative skills we decided to not deliver any code. You have to create a fun little project using the hardware (and software skills) you have at the moment.
You will get a STM32F0 discovery kit.
The STM32F0 discovery devkit is pretty barebones and doesn't have much hardware onboard.Just for fun an lcd and potentiometer is provided, you are not obliged to do anything with these accesoires though you can. You may also choose to combine the devkit with a Roomba and do fun stuff using the SCI port.
For this assignment you need the following software installed:
- arm-none-eabi-gcc toolchain (Supplied with the Raspberry Pi Pico SDK)
- CMake (Supplied with the Raspberry Pi Pico SDK)
- Segger tools (Installed in the intro to CMake workshop)
- Segger Ozone (You need to install this, as it is the first time you might use this!)
- Any code editor you would like to use, vscode and clion presets are supplied in this repo.
For installation take a look at installation.md
First of all scan over the CMake_basics.md file. This might come in handy later..
Then proceed by following the STM32F0.md guide.
Footnotes
-
Board Support Package (BSP) is a collection of software components that allows an operating system to function on a particular hardware platform. It includes low-level drivers, startup code, and other necessary files like linker scripts that initialize the hardware and provide mechanisms for the OS to interface with it. Specifically, for ARM Cortex-M0 based microcontrollers, the BSP might contain standardized CMSIS headers along with manufacturer-specific initialization code and headers, facilitating software development and system control. ↩
-
A HAL, or Hardware Abstraction Layer. Is a library (most of the time provided by the MCU manufacturer) that provides a simpler interface to control and communicate with the hardware components of a microcontroller. ↩