Kurs STM32 F4 – #2 – Niezbędne narzędzia: HAL, Cube

Kurs STM32 F4 – #2 – Niezbędne narzędzia: HAL, Cube

Przed przejściem do przykładów praktycznych warto poświęcić chwilę na ogólne omówienie narzędzi używanych w kursie STM32 F4. Główną nowością jest tutaj korzystanie z graficznego kreatora STM32CubeMX oraz bibliotki HAL.

Z tego artykułu dowiesz się czym są wspomniane narzędzia, jakie są ich słabe i mocne strony oraz na jakim dokładnie sprzęcie będziemy pracować.

Czym będziemy się zajmować w kursie STM32F4?

Kurs zawiera praktyczne przykłady tworzenia programów wykorzystujących podstawowe peryferia mikrokontrolerów STM32 takie jak: GPIO, ADC, Timery (liczniki), UART, I2C, SPI, a nawet USB.

Podczas kursu wykorzystywany będzie Windows (oprogramowanie było sprawdzone na systemach w wersjach 7, 8, 8.1 oraz 10). Jeżeli ktoś jednak bardzo chciałby pracować na Linuxie, to przy odrobinie wysiłku da radę - przeprowadzałem testy na Ubuntu.

Zestaw elementów do kursu

Gwarancja pomocy na forum Błyskawiczna wysyłka

Zestaw elementów do przeprowadzenia wszystkich ćwiczeń z kursu STM32 F4 można nabyć u naszego dystrybutora! Zestaw zawiera m.in. płytkę Discovery, wyświetlacz OLED, joystick oraz enkoder.

Kup w Botland.com.pl

Wykorzystywane narzędzia

Podczas kursu korzystać będziemy między innymi z narzędzi udostępnianych przez producenta układów STM32 - firmę ST. Ułatwiają one proces wytwarzania oraz testowania oprogramowania dla tej rodziny mikrokontrolerów. W poniższym zestawieniu krótko opisałem najważniejsze z nich.

STM32CubeMX

Cube jest programem pozwalającym na konfigurację peryferiów mikrokontrolerów STM32 za pomocą interfejsu graficznego. Umożliwia on także automatyczne wygenerowanie kodu konfiguracyjnego w języku C wykorzystującego biblioteki HAL w postaci gotowego projektu.

Źródło: materiały prasowe ST.

Źródło: materiały prasowe ST.

Narzędzie to pojawiło się na rynku na przestrzeni ostatnich kilku lat i jest jeszcze w początkowej fazie zdobywania fanów. Świadczyć o tym może fakt, że jak dotąd powstały tylko szczątkowe kursy dotyczące wykorzystania tego programu.

Panel główny programu STM32CubeMX

STM32CubeMX umożliwia skonfigurowanie mikrokontrolera pod projekt wykorzystujący różne peryferia w dużo wygodniejszy i szybszy sposób, niż byłoby to możliwe z bibliotekami STD lub za pomocą bezpośredniego korzystania z rejestrów.

Generowany kod wykorzystuje wygodne w użyciu biblioteki HAL, które pozwalają na uruchomienie dużego zestawu peryferiów za pomocą kilku linijek kodu. Dzięki temu kod zyskuje na przejrzystości i w bardzo szybkim czasie można się skupić na oprogramowywaniu właściwego zadania.

Biblioteki HAL dla STM32

Biblioteki HAL (Hardware Abstraction Layer) stanowią wysokopoziomowy interfejs do części sprzętowej mikrokontrolera, pozwalając tym samym korzystać z peryferiów w bardzo prosty i przejrzysty sposób.

W praktyce Cube generuje kod konfiguracyjny oraz inicjalizujący dla włączanych przez programistę peryferiów wykorzystując do tego biblioteki HAL.

Dla przykładu, poniżej przedstawione są trzy linie kodu, które dopisałem do wygenerowanego przez Cube programu. Jego zadaniem jest generowanie sygnału PWM o wypełnieniu proporcjonalnym do zmierzonego napięcia, wykorzystując do tego DMA.

Zadanie chociaż proste, wymagałoby od programisty napisania co najmniej kilkudziesięciu linijek kodu konfiguracyjnego, nie wspominając o konieczności znajomości bibliotek i zgłębiania dokumentacji mikrokontrolera.

STM Studio

Każdy kto korzystał kiedyś z debuggera, wie jak nieocenionym narzędziem może się on okazać. Często jednak brakuje nam możliwości podglądu wielu zmiennych w locie oraz ciekawszej formy wizualizacji danych.

ST poszło o krok dalej, oddając w nasze ręce STM Studio. Nie jest to debugger, a raczej narzędzie do wizualizacji danych znajdujących się w pamięci mikrokontrolera. W bardzo szybki i prosty sposób możemy stworzyć konfigurację przejrzyście prezentującą wiele parametrów jednocześnie.

Przykład praktycznego wykorzystania programu STM Studio

System Workbench for STM32

Wiemy już w jaki sposób będziemy konfigurować mikrokontroler, jakie biblioteki wykorzystamy do pisania programów oraz jakim narzędziem będziemy sprawdzać, co się dzieje w mikrokontrolerze.

Wypadałoby wyposażyć się jeszcze w przyzwoite środowisko do pisania właściwego programu. Podczas tego kursu będzie to System Workbench for STM32 (SW4STM32), czyli nakładka od ST na popularnego Eclipsa.

Ekran ładowania środowiska.

Ekran ładowania środowiska.

Cieszący się coraz większą popularnością Workbench (nazywany też AC6), zawiera wszystko, co potrzeba, aby programować mikrokontrolery STM32. Poza kompilatorem, wspieraniem naszych bibliotek oraz bezpośrednią możliwością wgrywania programów, znajduje się tam również dobrze działający debugger.

Panel główny nakładki na Eclipse ,,System Workbench for STM32"

Panel główny nakładki na Eclipse ,,System Workbench for STM32"

Oczywiście poza przedstawionymi tutaj programami, będziemy korzystać jeszcze z kilku mniej istotnych narzędzi, które przydadzą się w przypadku omawiania specyficznych zastosowań mikrokontrolerów - jak chociażby terminal do komunikacji przez UART. Programy te będą opisane w stosownych momentach.

Wady i zalety korzystania z proponowanych narzędzi

Zacznijmy od zalet. Korzystanie z generatora kodu i wysokopoziomowych bibliotek przyspiesza proces konfiguracji warstwy sprzętowej. Dzięki temu można dużo szybciej przejść do rozwijania właściwej części realizowanego zadania.

Kolejną zaletą jest mniejsze prawdopodobieństwo popełnienia błędu. Biblioteki obsługują większość rzeczy za programistę, który nie musi szczegółowo analizować not katalogowych. Wszystkie te rozwiązania pozwalają programować mikrokontrolery STM32 praktycznie bez żadnej wiedzy na temat ich architektury, czy też znajomości specyfiki konkretnych peryferiów.

Jedna z wymienionych zalet - brak konieczności znajomości architektury mikrokontrolerów - jest również bardzo poważną wadą. Wyklikując konfigurację mikrokontrolera często nie mamy pojęcia co dzieje się na niskim poziomie. Można przez to bardzo łatwo przeoczyć pewne operacje wykonujące się bez naszej wiedzy.

Drugą z wad jest bardzo kiepska dokumentacja oraz dostęp do materiałów. ST nie wydało jak dotąd żadnego ogólnodostępnego dokumentu dotyczącego korzystania ze wszystkich peryferiów za pomocą STM32CubeMX. Same bilblioteki HAL mają bardzo ogólną dokumentację, z której ciężko wyciągnąć coś przydatnego.

Kolejną z kwestii, które można potraktować negatywnie jest fakt, że Cube generuje kod tylko pod cztery wybrane środowiska programistyczne. Z czego tylko jedno jest w pełni darmowe - wykorzystywany w kursie Workbench. Cała reszta jest zupełnie niedostępna w wersji darmowej lub posiada ograniczenia wielkości kodu wynikowego.

Osobiście korzystałem z innych środowisk wspieranych przez Cube i muszę przyznać, że w wielu kwestiach Eclipse przewyższa je znacząco. Ma on oczywiście swoje wady, ale o tym później.

Sprzęt wykorzystywany w kursie STM32 F4

Wejście w świat bibliotek HAL i programowania mikrokontrolerów STM32 ułatwi nam płytka rozwojowa STM32F411E z serii Discovery. Zawiera ona wydajny mikrokontroler oparty o rdzeń Cortex-M4, programator ST-LINK oraz kilka ciekawych peryferiów.

Zestaw Discovery. Źródło zdjęcia: Botland.com.pl

Zestaw Discovery STM32F411E. Źródło zdjęcia: Botland.com.pl

Na jej pokładzie znajdziemy m.in.:

  • kompas,
  • akcelerometr,
  • żyroskop,
  • mikrofon,
  • przetwornik cyfrowo-analogowy przeznaczony do zastosowań audio.

Aby lepiej poznać możliwości mikrokontrolera STM32 F4 w przykładach wykorzystamy również joystick, wyświetlacz graficzny oraz enkoder impulsowy.

Zestaw elementów do kursu

Gwarancja pomocy na forum Błyskawiczna wysyłka

Zestaw elementów do przeprowadzenia wszystkich ćwiczeń z kursu STM32 F4 można nabyć u naszego dystrybutora! Zestaw zawiera m.in. płytkę Discovery, wyświetlacz OLED, joystick oraz enkoder.

Kup w Botland.com.pl

Płytkę discovery oraz zebrane tutaj części można w bardzo ciekawy sposób wykorzystać np. na studiach przy okazji różnych przedmiotów oraz projektów związanych z systemami wbudowanymi, mikrokontrolerami, czy robotyką. Zdecydowanie są to elementy wielokrotnego użytku!

Podsumowanie

Wiemy już jakie są główne założenia tego kursu. Zapoznaliśmy się wstępnie z wykorzystywanymi narzędziami oraz sprzętem. Wiemy również jakie są wady i zalety wybranych rozwiązań. Jeśli korzystanie z graficznego konfiguratora Cube jest dla kogoś za dużym uproszczeniem, to jest to ostatni moment na skorzystanie z poprzedniego kursu STM32 F1, który korzysta z bibliotek STD.

W następnym odcinku przejdziemy przez proces instalacji wszystkich narzędzi niezbędnych do pracy. Przyjrzymy się również bardzo dokładnie płytce STM32F411Discovery.

Nawigacja kursu

Tyle z mojej strony na dziś. Dzięki za uwagę!
Jeżeli macie jakiekolwiek wątpliwości, pytania lub sugestie - piszcie w komentarzach!

Autor kursu: Bartek (Popeye) Kurosz
Redakcja: Damian (Treker) Szymański

Cube, F4, HAL, kurs, kursSTM32F4, programowanie, stm32

Komentarze

Dodaj komentarz