fbpx

Każdy kiedyś z czymś zaczyna. Skoro jesteś tutaj to chciałbyś pewnie rozpocząć swoją przygodę z mikrokontrolerami STM32. Ja również kiedyś chciałem. W dzisiejszych czasach pierwszej pomocy szukamy w Internecie. Dlatego właśnie powstał ten wpis.

Jeśli jesteś zainteresowany uczestnictwem w kursie STM32 dla Początkujących – wszystkie informacje znajdziesz na https://kursstm32.pl/

Ja i mikrokontrolery

Swoją przygodę zaczynałem już w szkole średniej. Trochę z przymusu, ale zawsze to jakiś start.

Mieliśmy zajęcia z mikrokontrolerów 8051, a pisaliśmy w …asemblerze. Niby ok, ale jeszcze jako młody osobnik, który dokładnie nie wie co chce w życiu robić nie przykładałem się do tego. Ostatecznie i tak cały przedmiot zdałem na 5.

Niestety nienawidziłem tego języka. Może nie języka, a nudny sposób, w jaki była nam przekazywana wiedza. Cały semestr najpierw przepisywaliśmy pojedyncze rozkazy (mnemoniki) do zeszytów, a potem kolejny odpalaliśmy gotowce z książki…

Od tego czasu mam awersję do gotowców, bo niczego mnie z tego asemblera ani mikrokontrolerów nie nauczyły!

Pod koniec “wspaniałej” przygody z 8051 kolega pokazał mi swoje odkrycie – mikrokontrolery AVR. “Można na tym zrobić WSZYSTKO” mówił. No i co? Uwierzyłem hehe.

Zaczęliśmy dziubać  tych AVRkach w …Bascomie. Bo ponoć prosty i każdy w tym coś napisze. Powiem, że nawet coś tam napisałem w tym Bascomie, ale nadal to było błądzenie we mgle. Szybko też zorientowałem się, że ten język strasznie mnie ogranicza.

Dlatego trzeba od razu zorientować się, z jakiego języka w większości korzysta branża. Dla mikrokontrolerów będzie to język C.

Nauczyłem się tego C i w nim pisałem a AVR. Robiłem już fajne projekty, trawiłem płytki. W końcu podczas studiów dostałem się na praktyki, a ostatecznie dostałem pierwszą pracę.

Kilka lat później chcąc zmienić pracę rozbiłem się o kolejną ścianę. Prawie nikt nie programuje już AVRów. Technologia poszła do przodu, staniała i teraz w modzie są ARMy… Zostałem w tyle!

Nie można osiadać na lata na jednym rozwiązaniu!

Postawiłem na STM32 bo wiele się o nich mówiło. Oczywiście chciałem zacząć swoją naukę w Internecie. Najlepiej w Polskim, ale to nie był obowiązek. Zdziwiłem się jak mało dobrych materiałów jest w naszym języku… Przejrzałem większość i zacząłem szukać gdzie indziej.

Bałem się trochę ponownego rycia mikrokontrolerów samemu, po rejestrach. ARMy wydawały mi się mocno złożone, a nie miałem tez ochoty spędzać kolejnych lat na samodzielną naukę.

Tak się akurat złożyło, że ST zaczęło mocniej promować swoje nowe rozwiązania spod znaku Cube i HAL. Zaczęło się pojawiać coraz więcej materiałów. Jednak samo to rozwiązanie w połączeniu z moją poprzednią wiedzą z AVR w zupełności wystarczyło, aby samemu odkrywać nowe mikrokontrolery.

Bardzo podobało mi się to, że nie muszę ryć w rejestrach, a nadal mieć jakąś kontrolę nad sprzętem. Projekty mogę robić szybko i z zadowalającym efektem. To jest to, co cenię najbardziej.

Zobaczyłem, że tłuczona wszędzie na forach “jedyna słuszna prawda” na temat tego, że embedded to tylko rejestry jest po prostu kłamstwem. Należy dobierać odpowiednie narzędzia do wykonywanej pracy! Kto by jednym młotkiem wbijał gwoździe, wykuwał miecze i kruszył mury?

Co potrzebujesz, aby programować STM32?

  1. Języki

    Potrzebujesz znać dwa języki. Pierwszy i podstawowy to język angielski! Nie unikniesz angielskiego chcąc obcować z technologią. Już same dokumentacje są tylko po angielsku.

    Język programowania – C
    . Nie zawracaj sobie głowy innymi tworami. Na to możesz sobie pozwolić jak już będziesz potrafił pisać na mikrokontrolery w C.
  2. Sprzęt

    Programowanie Embedded to programowanie sprzętu.

    Odpuść sobie płytkę BluePill z Chin.
    Nie dość, że potrzebujesz do niej zewnętrznego programatora to jeszcze potrafi ona sprawiać różne kłopoty. To dlatego, że Chińczycy podrabiają układy z tej płytki i nie zawsze wszystkie działają tak, jak należy. Szkoda nerwów i czasu podczas nauki. Musisz się skupić na nauce, a nie rozwiązywaniu problemów z czapy!

    Polecam skorzystać z oficjalnych płytek od ST, na przykład serii Nucleo.
    Można również popatrzeć na Discovery, ale Nucleo dla początkującego jest zdecydowanie lepsze. Masz na niej zintegrowany programator i działa zawsze poprawnie!
  3. Framework
    Nazwałem to framework, ale chodzi mi o to, z jaką koncepcją bibliotek czy innych ułatwiaczy chcesz obcować. Do wyboru masz m.in.

    “Czysty C”. 
    Jest to podejście wychwalane pod niebiosa przez tak zwanych “prosów”. Ponoć inaczej nie wolno. Owszem jest dobre i daje niesamowicie zoptymalizowane rezultaty. Są również projekty, w których inaczej się nie da. Jednak to wymaga ogromnej wiedzy, a także doświadczenia. Nauka w tym trybie również jest o wiele trudniejsza.Arduino. Dla STM32 zostało przygotowane STM32Duino. Projekt fajnie się rozrasta i objął już większość popularnych płytek Nucleo. Arduino jest genialne w swojej prostocie. Strasznie ułatwia nam start w mikrokontrolerach, ale ma parę problemów. Jeśli chodzi o STM32 to je ogranicza. Wiele ficzerów jest po prostu niedostępna z poziomu Ardu. Nie mamy też kontroli nad używanym sprzętem jeśli po prostu dopinamy biblioteki do projektu. Mogą powstać dziwne konflikty.mbed. To takie Arduino od ARMa 🙂 Kiedyś miałem z nim styczność i takie mam właśnie zdanie. Warto sprawdzić, zwłaszcza mbedOS który jest używany powszechnie w branży.Ekosystem ST – Cube, HAL, LL. Według mnie jest to super rozwiązanie na start. Daje nam kontrolę nad sprzętem podobną do tej z programowania na rejestrach. Z drugiej strony daje nam uproszczenie używania sprzętu i ujednolicenie API w całej gamie mikrokontrolerów STM32 podobnie jak w Arduino. Wokół tych bibliotek narosło wiele nieprzychylnych legend, głównie z czasów ich początków. Cały czas można się z nimi spotkać. Na przykład pod moimi postami w Social Mediach cały czas ktoś pisze coś w stylu “HAL ma masę błędów, stare SPL lepsze!”. Takie kłamstwa najczęściej opowiadają osoby, które nigdy nie używały HALa i znają go tylko z takich właśnie legend. HAL to moja propozycja dla początkujących!
  4. Oprogramowanie

    Jeśli przekonałem Cię do HALa to w okół niego ST przygotowało ogromną ilość przydatnego oprogramowania. Dostajemy wszystko działające Out of the Box! Skończmy z walką z niedziałającym oprogramowaniem i zacznijmy programować mikrokontrolery. STM32CubeMX – Program graficznym do wygodnej konfiguracji projektu. Prosto i przyjemnie w klikalnym GUI skonfigurujesz mikrokontroler i wygenerujesz sobie projekt początkowy.STM32CubeIDE – IDE oparte na Eclipse (TrueStudio) ze wbudowanym CubeMX. One IDE to rule them all!STM32CubeProgrammer – Kombajn do pracy z programatorem. Programowanie, odczyt pamięci, bity blokujące i wiele innch przydatnych rzeczySTM32CubeMonitor – Monitorowanie wartości zmiennych w czasie rzeczywistym. Razem z rysowaniem wykresów.
  5. Dokumentacja Programowanie Arduino pokazuje nam, że można się dobrze bawić bez dokumentacji. Niestety to jest błąd! To w tych smutnych papierach znajdziemy odpowiedzi na najczęściej zadawane pytania odnośnie możliwości mikrokontrolera.Oczywiście dokumentacja jest po angielsku dlatego – punkt numer 1 tej listy.Dla STM32 potrzebujesz trzech dokumentów:Datasheet – Podstawowy opis MCU, zegary, pinout
    Reference Manual – Dokładny opis rejestrów i funkcji mikrokontrolera
    Errata – Dokument ze znanymi błędami w MCUMożesz jeszcze się posiłkować User Manualem do bibliotek HAL.

Skąd czerpać wiedzę?

Zapisz się na listę oczekujących kursu STM32 dla początkujących, aby nie przegapić startu
http://kursstm32.pl

Wiedzę możemy nabywać z różnych źródeł. Darmowych oraz płatnych. Oto kilka z nich wraz z moim komentarzem.

  1. Książki

    To chyba dosyć naturalne, że jako pierwsze typujemy książki. Szkoła nas tego nauczyła. Mamy kilka pozycji po polsku, głównie spod wydawnictwa BTC. Jedną z nich recenzowałem nawet jakiś czas temu.

    Mają one taką zaletę, że są względnie tanie. Niestety papieru nie da się zaktualizować, więc mogą się dosyć szybko zdezaktualizować. Przytrafiło się to właśnie tej recenzowanej przeze mnie książkę. W momencie premiery ST zmieniło design swoich programów i te w książce nie pokrywają się z tym co mamy teraz…

    Mają też taką wadę, że pracuje się trochę na gotowcach, a przynajmniej widzę, że korzystające z nich osoby trochę to tak traktują.

    Przeczytałem w części również “STM32. Aplikacje i ćwiczenia w języku C z biblioteką HAL” Pana Marka Galewskiego. Jeśli ktoś chce książkę to tak jest całkiem ok. Jest tam masa ciekawych przykładów używania peryferiów w STM32.

    A zagranicznych pozycji słyszałem mnóstwo dobrych opinii o “Mastering STM32” autorstwa Carmine Noviello. Niestety jeszcze jej nie czytałem, więc szerzej się nie wypowiem.

  2. Blogi Blogi to ciekawa i darmowa alternatywa. Mają taką wadę, że tematy na blogach nie składają się w jeden kurs czy proces nauki. Jednak jest tam mnóstwo wiedzy na pojedyncze tematy.Oczywiście polecam mojego bloga, na którym właśnie jesteś https://msalamon.pl/. W momencie publikacji tego artykułu znajduje się tutaj aż 58 postów. Wszystkie w głównej mierze kierowane są do osób początkujących. Chciałbym mieć taki zbiór, gdy ja się uczyłem.Z innych blogów, które obserwuję mogę polecić Wojtkahttps://elektronika327.blogspot.com/. Widziałem, że dosyć często pisze o STM32. Jednak tutaj jak dla mnie często brakuje szczegółowych opisów i jest głównie sam kod. Takie trochę gotowce.Jest jeszcze coś po angielsku. Polecam blog Tilena Majerle https://stm32f4-discovery.net/. On akurat nie pisze w HALu od ST, bo pisał głównie jeszcze zanim on wyszedł. Ma kilka artykułów poświęconych bieżącym rozwiązaniom. Bonus: Tilen aktualnie pracuje w ST jako Microcontroller Technical Marketing & Field Application Engineer.
  3. YouTube Warto użyć drugiej na świecie wyszukiwarki internetowej, aby uczyć się STM32. Można tam znaleźć sporo dobrych tutoriali dotyczących pojedynczych peryferiów. Większość jest po angielsku, ale jest jeden polski kanał, który prowadzi(ł) serię uczącą programowania STM32.

    Tym polskim kanałem jest kanał Piotr Duba Piotra 🙂 Oglądałem większość odcinków na temat STM32. Mogę ze spokojnym sumieniem polecić serię. Jednak jest to tylko zalążek świata STM32 i dopiero poruszył kilka podstawowych tematów.

    Z anglojęzycznych na pierwszym miejscu poleciłbym oficjalny kanał STMicroelectronics. Jest tam setki czy nawet tysiące filmów. ST prowadzi tak zwane MOOC, czyli Massive Open Online Courses. Jest naprawdę sporo dobrych serii i nagrań ze szkoleń. Można spokojnie ich używać. Sam używam!

    Polecę jeszcze jednego zagranicznego jutubera – MYacoobEmbedded. Ma dobra serię na temat programowania ST w HALu. Pojedyncze i nie za długie filmy są łatwe do łyknięcia i zrozumienia.

  4. Kursy Online

    Są jeszcze kursy online takie z prawdziwego zdarzenia, które prowadzą od początku do końca i mają przemyślany proces nauki. Dzięki temu nie musimy szukać po Internecie czego by tu się nauczyć, a dostajemy pełny program, który ma nas nauczyć programowania.Sam ostatnio korzystam z wielu takich kursów i uważam, że jest to świetne rozwiązanie!

    Z polskich oczywiście polecę siebie! Wydałem Kurs STM32 dla Początkujących składający się z aż 12-tygodni pracy. Warto zapisać się na listę oczekujących.

    Zapisy na  http://kursstm32.pl
    Jeśli chodzi o zagraniczne kursy
    to mamy Udemy. Nie korzystałem, ale wiele dobrego słyszałem na temat tego kursu. Nie jest on na HAL, a na rejestrach, więc jest to coś dla  osób mocno zdeterminowanych 😉

Na co uważać w kursach?

Kursy są różne, a często sięgamy po te darmowe. Często również korzystamy bardziej z poradników niż kursów. Widziałem kilka popularnych serii na Youtube chociażby dla Arduino i nie są one wybitne.

To co w nich jest dobrego, to przechodzenie krok po kroku przed peryferia w mikrokontrolerze. Spoko jest poznać nasz układ kawałek po kawałku.

Jednak co z tego, że znamy te kawałki, jak nie potrafimy ich ze sobą połączyć. Czemu nie potrafimy?

Twórcy nadużywają w swoich poradnikach funkcji opóźniających, czyli delayów.

Początkująca osoba nauczy się opóźniać pracę mikrokontrolera w ten właśnie sposób i przy późniejszym pisaniu taki delikwent leży. Nie potrafi później do swojego kodu dorzucić większej liczby funkcji bo przecież gdzieś po drodze czeka na jakiś pomiar. Delay wstrzymuje mikrokontroler totalnie.

Poradniki na temat delaya pojawiają się dopiero jako ciekawostka, coś bardzo zaawansowanego i odkrywczego. To ma być na samym początku, a nie jako dodatek!

Dlatego w moim kursie już przy okazji pierwszego modułu rozprawiamy się z delayem. Jak?

Przy pomocy timerów programowych oraz maszyy stanów. Dla każdego coś dobrego.

Podsumowanie

Na temat nauki programowania możnaby napisać dosyć grubą książkę. Każdy ma swoje racje i swoje poglądy. Ja przedstawiłem swoje przemyślenia na podstawie mojego doświadczenia.

Gdy kogoś wprowadzam w świat STM32 to właśnie w ten sposób. Czy to na indywidualnych zajęciach, czy właśnie w moim kursie.

Pamiętaj, że to dopiero początek drogi i dalszych możliwości jest jeszcze więcej!

Jeśli masz ochotę, dołącz do nas w moim kursie STM32 dla początkujących!

Zapis na lise oczekujących -> http://kursstm32.pl

Jeśli zauważyłeś jakiś błąd, nie zgadzasz się z czymś, chciałbyś coś dodać istotnego lub po prostu uważasz, że chciałbyś podyskutować na ten temat, napisz komentarz. Pamiętaj, że dyskusja ma być kulturalna i zgodna z zasadami języka polskiego.

Podobne artykuły

.

5 komentarzy

neptun · 09/11/2021 o 13:19

Potwierdzam. Z blue pill problemy się zdarzają, mnie trafił się z podrobionym MCU (Keil o to się rzucał). Dodatkowo te zewnętrzne tanie programatory też lipa, w środku nawet już nazwa inna na scalaku, a i nie resetuje automatycznie płytki po zaprogramowaniu.

    Mateusz Salamon · 17/11/2021 o 15:34

    Nucleo > Chińskie płytki 🙂

fokulec · 07/02/2021 o 22:10

Sporo brakujących spacji w Twoim tekście. Warto poprawić.

Andrzej · 10/12/2020 o 17:34

Czy opisywana tutaj kiedyś KA-NUCLEO-F411CEv2 to również dobry pomysł na początek z STM32?

Dodaj komentarz

Avatar placeholder

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *