Ta strona używa ciasteczek (plików cookies), dzięki którym może działać lepiej. Dowiedz się więcejRozumiem i akceptuję
PROMOCJA30% rabatu na wszystkie książki Grupy Helion, kod: FORBOT30 Przejdź na stronę księgarni »

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

Programowanie 05.04.2016 Bartek (Popeye)

kursSTF4_2Przed 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ć.

Nawigacja serii artykułów:
« poprzednia częśćnastępna część »

Kup zestaw elementów i zacznij naukę w praktyce! Przejdź do strony dystrybutora »

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.

W trakcie kursu zaprezentowane będą przykłady oparte na przypadkach,
które z powodzeniem odnajdą zastosowanie w rzeczywistych zastosowaniach.

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 przeprowadzenia ćwiczeń

Gwarancja pomocy na forum dla osób, które kupią poniższy zestaw!

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 Botlandzie »

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.

Wszystkie wykorzystywane w kursie narzędzia są
udostępniane za darmo w pełnej wersji!

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.

Według moich poszukiwań, nie powstał żaden ogólnodostępny kurs, zawierający więcej niż 30% zagadnień, które będą omówione w kolejnych artykułach.

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.

Sprawdź również kurs STM32 F1 oparty o biblioteki STD »

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.

Ich uruchomienie wymaga zazwyczaj już dosłownie tylko kilku linijek.

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.

Korzystając z Cube i HAL wszystko jest znacznie łatwiejsze!

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.

Jak dotąd mówiliśmy o przedstawianych narzędziach w samych superlatywach.
Czy faktycznie nie mają one wad? Niestety tak nie jest.

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.

Nierzadko mogą się one okazać katastrofalne w skutkach
(czytaj: nie będzie działać, albo co gorsza, będzie działać tylko trochę).

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.

Dokumentacja mikrokontrolera jest natomiast bardzo obszerna i można w niej znaleźć większość potrzebnych informacji. Zazwyczaj jednak odnalezienie interesującego nas fragmentu zajmie sporo czasu.

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.

Dodatkowe informacje na temat dostępnych rdzeni oraz architektur rodziny STM
znaleźć można w 2 części kursu STM32 F1.

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 przeprowadzenia ćwiczeń

Gwarancja pomocy na forum dla osób, które kupią poniższy zestaw!

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 Botlandzie »

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.

Kup zestaw elementów i zacznij naukę w praktyce! Przejdź do strony dystrybutora »

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

Powiadomienia o nowych, darmowych artykułach!

Komentarze

jkarczew

8:46, 05.04.2016

#1

Czy jest możliwość wygenerowania kursu w PDF? Znacznie lepiej czyta się z papieru po wydrukowaniu.

Treker
Administrator

9:20, 05.04.2016

#2

jkarczew, w chwili obecnej wszystkie kursy Forbota dostępne są w formie Internetowej.

W kolejnych częściach będą pojawiały się animacje, filmy - w wersji papierowej takie materiały byłyby niestety bezużyteczne.

Magit

1:19, 06.04.2016

#3

Witam, czy możliwe jest opracowanie i dodanie własnej biblioteki do biblioteki HAL, czy jednak producent zastrzegł sobie prawa i możemy korzystać tylko z tych zaimplementowanych przez niego?

Pozdrawiam i czekam na kolejne artykuły!

akuch2

16:19, 11.04.2016

#4

Pomysł kontynuacji STM32 wydaje mi się słuszny i czekam na kolejne artykuły.

Wielu z nas ma w domu już kilka mikrokomputerów może czas połączyć je ze sobą np. starą i nową płytkę nucleo i discavery.

Sterowanie i komunikacja między płytkami to coś co może zainteresować wielu robotyków. Myślałem o wersji z SPI i bardziej zaawansowanej czyli protokół CAN.

Może ten temat jest już opracowany?-to proszę o linki.

Treker
Administrator

16:27, 11.04.2016

#5

akuch2, na ten moment nie ma na Forbocie takich materiałów.

Możliwe, że się pojawią - najpierw jednak musimy przejść przez podstawy, aby było się do czego odwoływać :)

akuch2

16:46, 11.04.2016

#6

To może po SPI -podstawy już były.

Treker
Administrator

17:15, 11.04.2016

#7

akuch2, w HAL? Jeszcze chyba nie :) W każdym razie temat komunikacji między układami jest na mojej liście tematów.

Harnas

17:29, 11.04.2016

#8

Przykładowe projekty, między innymi z komunikacją są w: %USERPROFILE%\STM32Cube\Repository\STM32Cube_FW_F1_V1.3.0\Projects

Zobacz powyższe komentarze na forum

FORBOT Damian Szymański © 2006 - 2017 Zakaz kopiowania treści oraz grafik bez zgody autora. vPRsLH.