Elektroda.pl
Elektroda.pl
X
PCBway
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[STM32][C] - Poradnik dla początkujących (bez bibliotek)

szczywronek 06 Mar 2016 20:56 57540 134
  • #91
    Użytkownik usunął konto
    Użytkownik usunął konto  
  • PCBway
  • #92
    qaz88
    Poziom 12  
    Jeszcze wzor na USARTDIV jest rozny dla OVER8 i 16. Ale przy OVER16 faktycznie sprowadza sie wszystko ostatecznie do takiego prostego o czym w tej nocie nie powiedziano. A w sumie raczej malo kto potrzebuje predkosci powyzej 5MB/s aby musiec korzystac z OVER8 wiec nie ma problemu.

    Szkoda ze nie bedzie opisu komunikacji z kartami SD, wlasnie sie z tym mecze bo przykladow na rejestrach i SDIO w necie nie znalazlem zadnych
  • #93
    Boulious
    Poziom 7  
    Chciałbym podzielić się swoim tworem DS18B20 + STM32F4 Discovery po niecałych 2 miesiącach obcowania z poradnikiem. Zaczynając od zera jeśli chodzi o znajomość mikrokontrolerów z podstawową znajomością C.
    Kod: c
    Zaloguj się, aby zobaczyć kod

    Jest to pierwszy krok i chodziło o jak najprostsze dotarcie do czujnika i odczyt temperatury w debuggerze (brak wyświetlacza).
    Plan na kolejny tydzień, który powstał wraz z czytaniem poradnika i innych źródeł m.in. innych tematów na elektrodzie to:
    (poza takimi rzeczami jak kosmetyka i rozszerzenie opcji czujnika, czyli wrzucenie wyniku do tablicy, poprawne konwertowanie, dodanie opcji wyszukiwania przy podłączeniu wielu czujników, konfigurowanie czujnika, sprawdzenia CRC)
    - wyrzucenia delay
    - oparcie się tylko na timerze
    - oparcie się tylko na UART

    Uczę się dopiero więc proszę o wyrozumiałość.
    Każde uwagi, nawet te najbardziej krytyczne ale konstruktywne mile widziane.

    PS. Zastanawiałem się czy to tutaj wrzucać, ale może komuś się przyda, a nie chodzi mi o zakładanie nowego tematu i debatowanie na tym kodem. Wiem, że to nie dotyczy bezpośrednio poradnika, ale autor napisał, że może będzie chciał rozwinąć go o ten czujnik temperatury. Może chciałby wiedzieć jakie są efekty pracy od podstaw.

    EDIT:
    Trochę zmodyfikowany tzn. wrzuciłem sekwencje do przerwania:
    Kod: c
    Zaloguj się, aby zobaczyć kod
  • PCBway
  • #94
    qaz88
    Poziom 12  
    Jeszcze taka porada z mojej strony. Opisz dla poczatkujacych takie darmowe narzedzie do debugowania (i nie tylko) STM Studio. Mozna w prosty sposob na roznego rodzaju wykresach analizowac i zmieniac dane w programie. Tak jak debugger tylko duzo bardziej przejrzysty i czytelny zwlaszcza dla poczatkujacych. Np do wizualizacji odebranych danych albo odczytow z poszczegolnych ADC, zapisywanie historii, przenoszenie do excela, pisanie prostych funkcji kontrolnych itd.
  • #95
    Użytkownik usunął konto
    Użytkownik usunął konto  
  • #96
    vp32
    Poziom 11  
    Cześć Wam.

    Ja mam trochę inne pytanie. Autor opisuje jakie pliki potrzebne są do uruchomienia programów m.in.
    core_cmx.h, cmsis_gcc.h, stm32fxx.h to dotyczyło akurat kompilatora GCC.

    Pytanie co z plikami tzw. startowymi w asm i linkera? Zwykle kończą się rozszerzeniem S i ld.

    CZy one muszą być dołączane, czy tu może codzi o to że tworząc projekt należy zaakceptować domyślne dodanie tych plików. Ja korzystam akurat z keila i on o to pyta.

    Druga sprawa, czy w ogóle kompilator i linker poradzi sobie bez tych plików i co one tak na prawdę robią, a co może ważniejsze skąd (gdzie to jest podane) że kod w takim pliku startowym ma się zacząć właśnie od tego kodu?
  • #97
    Elektro_maniak
    Poziom 7  
    Poradnik wspaniały, bardzo dużo się dzięki niemu nauczyłem. Bardzo dziękuję za podzielenie się tak szeroką wiedzą.

    Czy kolega przewiduje rozszerzenie poradnika o obsługę interfejsu I2C?

    Pozdrawiam
  • #98
    dziechu
    Poziom 27  
    Może zainteresuje się jakieś wydawnictwo? Helion? Ja za taką książkę chętnie zapłacę nawet 100zł. Bo jest 100 razy lepsza niż wszystkie razem co już kupiłem.
  • #99
    tikka.masala
    Poziom 20  
    A czy jest jakiś poradnik na zmajstrowanie sobie środowiska pod Windows? Bo jak widzę ST nie ma własnego środowiska (jak Atmel), można tylko coś kupić albo skręcić jakąś prowizorkę z open software.
  • #100
    ramrusazer
    Poziom 13  
    Masz TrueStudio Atolica, bez ograniczeń na eclipsowatym, albo Keil, IAR, CrossWorks z ograniczeniami kodu.
  • #101
    Użytkownik usunął konto
    Użytkownik usunął konto  
  • #102
    tikka.masala
    Poziom 20  
    Piotrus_999 napisał:
    tikka.masala napisał:
    Bo jak widzę ST nie ma własnego środowiska (jak Atmel)

    To żle parzsz. System workbwench a


    Ok, dzięki - jakoś nie zauważyłem tej nazwy w tutorialach.
  • #103
    shinzu
    Poziom 10  
    Może i stary temat, ale dla mnie właśnie się rozpoczyna przygoda z ARM. Zakupiłem zestaw STM32F411-DISCO i próbuje ogarnąć jak wielką przepaść wiedzy mam w porównaniu do stanu z końca technikum (minęło 9 lat... wow).
    Szczywronek stworzył wg mnie kawał świetnego poradnika jednak chyba u mnie przez te kilka lat wypałiły sie zwoje i chyba zabawa w c++ / c# oraz proste java scripty przytępiły moje zmysły.
    Co jeszcze dorzucacie aby tak zupełnie zrozumieć w jakim "bajorku" będę pływał jeśli chce wykorzystać uC od ARM?
    Wstępnie rozeznałem się w temacie jednak wszystkie tutoriale i przykłady w końcu ląduję na bibliotekach HAL lub STL.
    Przerobiłem kurs z forbot.pl dot. mojego zestawu ( http://forbot.pl/blog/artykuly/programowanie/...4-1-czas-poznac-hal-spis-tresci-kursu-id14114 ) ale za nic nie kminię jak faktycznie działa przykładowy program. Za dużo plików składowych i sama nauka na zasadzie "te pliki muszą być i tamte też" nie satysfakcjonuje mnie.
    Wołałbym napisać prosty własny program ale wiedzieć w 100% do czego tam się odwołuję.
    Mam pełną determinację aby poznać programowanie ARM bez używania bibliotek.
    Czy może ktoś z kolegów pomóc? Pisząc pomóc mam na myśli zapodanie podstaw tak aby przebrnięcie przez Poradnik był lżejszy ;)
    Pozdrawiam.
  • #104
    piotrek0207
    Poziom 14  
    shinzu napisał:
    wielką przepaść wiedzy mam w porównaniu do stanu z końca technikum (minęło 9 lat... wow).


    No chyba dla zawodowego elektronika to nie powinien być problem :). Ja hobbysta 16 lat po technikum (nieelektronicznym) odpaliłem przy pomocy tego poradnika SPI oraz I2C na ekspanderze mcp23017.
    Bazowałem także na przykładach ze strony:

    http://www.fmf.uni-lj.si/~ponikvar/STM32f407.htm
  • #105
    squelch
    Poziom 11  
    Witam czy można by prosić o poprawę ścieżek prowadzących
    Cytat:

    Jak i skąd to wszystko zdobyć? Plik nagłówkowy mikrokontrolera oczywiście ze strony ST. Dokładniej trzeba pobrać paczkę z narzędziem STM32Cube i wyłuskać z niej odpowiedni plik nagłówkowy. Przykładowo dla STM32F103:
    www.st.com
    Products → Microcontrollers → STM32 32-bit ARM Cortex MCUS → STM32F1 Series → STM32F103
    Software → STM32Cube
    STM32CubeF1
    Get Software → Download
    w rozpakowanym archiwum: Drivers → CMSIS → Device → ST → STM32F1xx → Include
    w pliku stm32f1xx.h sprawdzamy nazwę pliku nagłówkowego dla naszego mikrokontrolera (np. mikrokontroler STM32F103VC to plik stm32f103xe.h)
    i mamy nasz garniec złota na krańcu tęczy – plik nagłówkowy mikrokontrolera z definicjami rejestrów i bitów: stm32f103xe.h
  • #107
    PiotrLenarczyk
    Poziom 8  
    str. 206: poniżej 1uA na ARM v7-Cortex M4???!??? Przydatny poradnik - jako książkę możesz opublikować na zasadach OpenBook na własnej stronie (swego czasu była tak publikowana książka "Advanced LINUX programming" przez jej autora Mitchela na licencji Open Publication License na jego własnej stronie). Wtedy dopiero można czuć się fajnym, bo przecież bez własnej książki się nie jest specjalistą:
    https://pl.wikipedia.org/wiki/Otwarty_dost%C4%99p
  • #108
    marcin w
    Poziom 22  
    Cześć wszystkim.

    Poradnik choć napisany w wielu miejscach nietechnicznym językiem, jednak wart uwagi. Autor zawarł w nim sporo ciekawych informacji na temat programowania STM32.

    Ogólnie w sprzedaży ubogo w literaturę o stm32, jest w zasadzie pozycja oparta o przestarzałe standard peripheral library, a zagłębiających się programowanie "po rejestrach" kompletnie brak. A w wielu przypadkach jest to prostsze niż korzystanie z przestarzałego standard peripheral library czy współczesnego HAL. I nie wspomnę już o optymalizacji kodu wynikowego.

    Sam w pierwszym podejściu do stm32 próbowałem standard peripheral library, niestety nawyki zdobyte przy AVR-ach skusiły mnie do do odejścia od bibliotek.
  • #109
    PiotrLenarczyk
    Poziom 8  
    Poradnik spoko - zauważyłem lepszą przydatność wygenerowania pojedynczego pliku nagłówkowego z rejestrami, skrojonego na miarę, w postaci struktury unii, niżeli używanie wyciętych fragmentów pliku nagłówkowego. Niestety trzeba uważać przy tworzeniu takiego pliku nagłówkowego i pilnować poprawności z dokumentacją:
    Kod: c
    Zaloguj się, aby zobaczyć kod
  • #110
    Użytkownik usunął konto
    Użytkownik usunął konto  
  • #111
    OziPL
    Poziom 8  
    Witam dostałem od kolegi Twój poradnik i tak się zastanawiałem czy to jakaś literówka czy zawsze piszesz "toto" zamiast "to" ? Np "czyli nie zmieści się toto w jednym" -> aktualnie jestem na 37 stronie, a juz nie pierwszy raz to mi mignęło :)
  • #112
    PiotrLenarczyk
    Poziom 8  
    Piotrus_999 napisał:
    @PiotrLenarczyk Nieco wątpliwa biorąc pod uwagę wielość dostępnych urządzeń, oraz to że CMSIS jest powszechnie akceptowanym standardem.

    Nikt każe tego używać - wrzuciłem, jakby ktoś rozważał użycie uniwersalnego rozwiązania.
  • #113
    Użytkownik usunął konto
    Użytkownik usunął konto  
  • #114
    PiotrLenarczyk
    Poziom 8  
    Ja nic sądzę - dla mnie to było odkrywcze (struktura unii umożliwiająca ustawienie całego rejestru, jak i pojedynczych bitów w pojedynczym rejestrze tablicy rejestrów), więc dorzuciłem.
    Piotrus_999 napisał:
    PiotrLenarczyk napisał:
    niżeli używanie wyciętych fragmentów pliku nagłówkowego.
    A kto tak używa?


    Piotrus_999 napisał:
    PiotrLenarczyk napisał:
    jakby ktoś rozważał użycie uniwersalnego rozwiązania.
    No no. To się nazywa wysoko samoocena.

    Sądzisz że nikt przed tobą nie odkrył bitfields i unie?

    Może i racja, bo na MCU pisze dopiero od 5 tygodni.
  • #115
    SyriuszPL
    Poziom 9  
    Dzięki temu poradnikowi udało mi się z sukcesem wykonać pracę inżynierską:) Powinien zostać wydany w przez jakieś wydawnictwo. Chętnie bym kupił.
  • #116
    upiechu
    Poziom 5  
    Popieram poprzednika. Według mnie ten poradnik jest dużo bardziej przydatny, niż wydane w podobnej tematyce książki.
  • #117
    marcin w
    Poziom 22  
    upiechu napisał:
    Popieram poprzednika. Według mnie ten poradnik jest dużo bardziej przydatny, niż wydane w podobnej tematyce książki.

    Z polskojęzycznych książek tematyce STM32 nie ma nic sensownego, w zasadzie ten poradnik jest jedną ciekawie napisaną lekturą wartą przeczytania.
  • #118
    PiotrLenarczyk
    Poziom 8  
    Wszystko byłoby spoko w poradniku, gdyby nie teksty. Już chyba lepiej poczytać literaturę naukową - przynajmniej nie uprawiają dziwnego stylu filozofii. Autor często się odwołuje do bloga p. Szczygła, stosującego podobnie optymistyczne nazewnictwo - nie zachwycałbym się, pomimo profesjonalności obydwóch. Faktem jest, że dużo się z tegoż-że poradnika nauczyłem. Upraszcza wiele sztucznie skomplikowanych zagadnień ( np. tarcze Arduino:D ).

    Moderowany przez tmf:

    Fragment postu niezwiązany z tematem usunąłem.

  • #119
    dziubas34
    Poziom 7  
    Czy da się w jakiś prosty sposób programowo zrobić ustawianie losowego wyjścia po naciśnięciu przycisku na STM32F103? Przykład: wciskam switch i losowo ustawia się jedno z zadeklarowanych wyjść. Na arduino jest funkcja random a tutaj nie mam pojęcia jak to zrobić.
  • #120
    marcin w
    Poziom 22  
    dziubas34 napisał:
    Czy da się w jakiś prosty sposób programowo zrobić ustawianie losowego wyjścia po naciśnięciu przycisku na STM32F103? Przykład: wciskam switch i losowo ustawia się jedno z zadeklarowanych wyjść. Na arduino jest funkcja random a tutaj nie mam pojęcia jak to zrobić.


    Arduino ma zbiór dodatkowych gotowych funkcji które możesz bezpośrednio użyć w kodzie. Możesz podejrzeć tą funkcję w arduino i napisać sobie ją w wersji dla STM32. Gotowej raczej nie znajdziesz w środowisku programistycznym.