STM32 start wersja 31.03.2023

STM32 + libopencm3

(Testowane na Ubuntu 22.04 LTS)

Link do katalogu z przykładami na STM32: https://polprog.net/papiery/stm32/

Podstawowy setup

Git, ssh, kompilator+toolchain STM32, libopencm3

Linie zaczynajace sie od $ to polecenia do uruchomienia w terminalu

Generujemy klucz SSH potrzebny do obsługi repozytoriów gita

$ ssh-keygen
* akceptujemy domyślną ścieżkę *
* możemy wpisać hasło do klucza, będzie trzeba je wpisać za każdym jego użyciem *
* Można też zostawić puste hasło *

Następnie trzeba dopisać klucz do swojego konta na gitlabie aby mieć dostęp do prywatnych repozytoriów (GitLab, Github i inne serwisy wycofały możliwość autentykacji po HTTP (user+pass) w zeszłym roku). W tym celu:

Klucz SSH

Uwaga 1: Kopiowanie między maszyną wirtualną a hostem może nie działać, można się zalogować do gitlaba w maszynie
Uwaga 2: Kopiowanie i wklejanie z terminala: Ctrl-Shift-C/Ctrl-Shift-V lub Ctrl-Insert/Shift-insert. Te drugie skróty zawsze działają.

Instalcja git-a (może być już zainstalowany)

$ sudo apt install git

Instalacja toochaina i kompilatora STM32

$ sudo apt install binutils-arm-none-eabi gcc-arm-none-eabi libstdc++-arm-none-eabi-newlib libnewlib-arm-none-eabi gdb-arm-none-eabi build-essential

Instalacja programu st-flash (narzędzia STLink). Należy ściągnąć najnowszą paczkę .deb stąd i zainstalować przez dpkg:

$ sudo dpkg -i stlink_XXXXX_amd64.deb
$ sudo apt --fix-broken install

Instalacja libopencm3

Sklonowanie repozytorium libopencm3

$ git clone https://github.com/libopencm3/libopencm3.git
$ cd libopencm3
$ make TARGETS="stm32/f0 stm32/f1"

Kompilacja blink

Program testowy do migania LEDem/ledami

Skonuj repozytorium z przykładami na BluePilla:

$ git clone https://bitbucket.org/OpCode-eu-org/stm32-examples.git
$ cd stm32-examples
# Tutaj trzeba stworzyć dowiązanie symboliczne (symlink) do katalogu libopencm3
# zakładając, że wszystkie polecenia były wykonane w katalogu domowym to ścieżka jest ../libopencm3
# ln -s cel nazwa
$ ln -s ../libopencm3 libopencm3

Zbuduj 10_blink

$ cd 10_blink
$ make

Podłączenie STlinka do bluepilla zgodnie z pinoutem. Na Discovery złącze SWD ma taki pinout:

SWD Discovery pinout

Manual do płytki Discovery dla L0

Wgranie skompilowanego programu na STM32 przez STlinka:

$ st-flash write program.bin 0x08000000

Uwaga: Z maszyną wirtualną czasami nie działa USB. Trzeba wtedy podłączyć i odłączyć ST-Linka (nie da sie go inaczej zresetować).

discovery   bluepill
--------------------
SWDIO     - SWDIO
SDCLK     - SWCLK
GND       - GND
3V        - 3V3

Połączenie Discovery w roli ST-Linka do BluePilla