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ć.
Uwaga! Ten kurs został zarchiwizowany. Sprawdź najnowszy kurs STM32 »
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.
Gotowe zestawy do kursów Forbota
Komplet elementów Gwarancja pomocy Wysyłka w 24h
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.
Masz już zestaw? Zarejestruj go wykorzystując dołączony do niego kod. Szczegóły »
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.
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.
C
1
2
3
4
5
6
uint16_t MeasuredValue;// zmienna do której wpisany będzie pomiar
HAL_ADC_Start_DMA(&hadc1, &MeasuredValue, 1);// Rozpoczęcie pomiarów ADC na przetworniku 1 i
// właczenie przesyłania danych do zmiennej MeasuredValue za pomocą DMA
//generowania sygnału PWM na kanale pierwszym timera 1 oraz włączenie przesyłania
// danych ze zmiennej MeasuredValue do przetwornika za pomocą 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.
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"
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 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.
Gotowe zestawy do kursów Forbota
Komplet elementów Gwarancja pomocy Wysyłka w 24h
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.
Masz już zestaw? Zarejestruj go wykorzystując dołączony do niego kod. Szczegóły »
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.
Dołącz do 20 tysięcy osób, które otrzymują powiadomienia o nowych artykułach! Zapisz się, a otrzymasz PDF-y ze ściągami (m.in. na temat mocy, tranzystorów, diod i schematów) oraz listę inspirujących DIY na bazie Arduino i Raspberry Pi.
Dołącz do 20 tysięcy osób, które otrzymują powiadomienia o nowych artykułach! Zapisz się, a otrzymasz PDF-y ze ściągami (m.in. na temat mocy, tranzystorów, diod i schematów) oraz listę inspirujących DIY z Arduino i RPi.
Trwa ładowanie komentarzy...