eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronikaSTM32 i HAL -- pierwsze podejście, pierwsze pytaniaRe: STM32 i HAL -- pierwsze podej?cie, pierwsze pytania
  • Path: news-archive.icm.edu.pl!news.icm.edu.pl!fu-berlin.de!news.uzoreto.com!aioe.org!
    NZ87pNe1TKxNDknVl4tZhw.user.46.165.242.91.POSTED!not-for-mail
    From: a...@m...uni.wroc.pl
    Newsgroups: pl.misc.elektronika
    Subject: Re: STM32 i HAL -- pierwsze podej?cie, pierwsze pytania
    Date: Tue, 26 Jul 2022 01:58:27 -0000 (UTC)
    Organization: Aioe.org NNTP Server
    Message-ID: <tbnho3$3r3$1@gioia.aioe.org>
    References: <1...@h...invalid>
    Injection-Info: gioia.aioe.org; logging-data="3939";
    posting-host="NZ87pNe1TKxNDknVl4tZhw.user.gioia.aioe.org";
    mail-complaints-to="a...@a...org";
    User-Agent: tin/2.4.5-20201224 ("Glen Albyn") (Linux/5.10.0-9-amd64 (x86_64))
    Cancel-Lock: sha1:Lg5V6ERktZAsUDpJTA/xXwM8dbI=
    X-Notice: Filtered by postfilter v. 0.9.2
    Xref: news-archive.icm.edu.pl pl.misc.elektronika:773477
    [ ukryj nagłówki ]

    Arnold Ziffel <a...@h...invalid> wrote:
    > Hej,
    >
    > Tak jak pisa?em -- zacz??em troch? rze?bi? w STM32. Programator jeszcze
    > nie przyszed? (zdecydowa?em, ?e jednak nie u?yj? p?ytki Nucleo tylko od
    > razu wrzuc? MCU w projektowany uk?ad), ale zacz??em pisa? kod na sucho.
    >
    > I tu pojawia si? kilka pyta? / problem?w.
    <snip>
    > 3. Czy ja dobrze widz?, ?e HAL nie udost?pnia mo?liwo?ci szybkiego
    > prze??czania pinu mi?dzy wej?ciem i wyj?ciem? Tak si? sk?ada, ?e w
    > pierwszym projekcie, do kt?rego chc? u?y? STM32, potrzebuj? trzech stan?w
    > (niski, wysoki i wysokiej impedancji). Akurat tutaj nie potrzebuj? tego
    > szybko (co 4 ms), wi?c sztuczka z wywo?ywaniem (stosunkowo ci??kiej)
    > funkcji HAL_GPIO_Init() si? uda, ale nie wyobra?am sobie tego w bardziej
    > krytycznych czasowo sytuacjach.
    >
    > A mo?e w og?le obs?uga GPIO przez HAL to zabawka dla pocz?tkuj?cych i
    > nikt, kto programuje na serio, nie korzysta z tego, tylko pisze
    > bezpo?rednio do port?w?

    Chyba duzo ludzi uzywa HAL-a. Czesc uzywa interfejs low level.
    Ja zaczelem od biblioteki 'libopencm3', z tym ze sporo rzeczy
    robilem bezposrednio.

    Co do szybkiego przelaczania: mysle ze filozofia wielu programow
    zaklada konfiguracje na starcie a potem brak zmian. W STM32
    konfiguracja moze byc dosc "ciezka": na starcie wiekszosc urzadzen
    jest wylaczona (dla oszczednosci energii), zeby je uaktywnic
    trzeba w paru miejscach zrobic odpowiednie ustawienia. Np.
    dla GPIO jest lock register: mozesz zablokowac zmiany konfiguracji
    az do nastepnego resetu.

    > 4. Czy ja dobrze widz?, ?e HAL nie umo?liwia agregowania pin?w? Chcia?bym
    > jednocze?nie zmieni? stan konkretnych pin?w w porcie -- czy da si? to
    > zrobi? przez HAL, czy trzeba pisa? bezpo?rednio do portu?
    >
    > 5. Mamy pi?kny enum GPIO_PinState, a w nim warto?ci GPIO_PIN_SET oraz
    > GPIO_PIN_RESET. Czy HAL umo?liwia takie skonfigurowanie portu, ?eby port
    > by? zanegowany (czyli np. pisz?c PIN_SET chcemy tak naprawd? ustawi? tam
    > stan niski, i tak samo odczytuj?c)? Nie widz? nic takiego, a skoro ju?
    > wprowadzili HAL, to wydaje mi si? to rozs?dne i logiczne.

    Normalnie chcesz zeby zapis pin(ow) to byla 1-3 instrukcje
    maszynowe: w ogolnej wersji jedna umieszcza adres portu
    w rejestrze procesora, druga umieszcza wartosc w rejestrze
    procesora, trzecia presyla wartosc z rejestru procka do
    portu. W wielu sytuacjach potrzebne sa juz w rejestrach
    procesora, wtedy wystarczy pojedyncza instrukcja. Jak
    masz odpowiednie makra (czy funkcje inline) to tak bedzie
    (nie wiem czy HAL to robi). Negacje mozesz wrzucic w
    miare prosta makrologia, ale to moze (nie musi) dodac
    dodatkowe instrukcje wiec nie jest dobre jako defaultowy
    ficzer.

    > 7. Pytanie bardziej o sam mikrokontroler. W jakim stanie b?d? piny, gdy
    > procesor wejdzie w stan resetu

    W datasheet jest stan rejestrow po resecie. We wszystkich modelach
    STM32 ktore widzialem normaly stan po resecie to bylo "input floating".

    > (bo np. b?d? wrzuca? nowy program przez
    > programator)?

    Ja uzywalem STlink (sprzet) z opensourcowym programem stlink.
    On _nie_ resetowal procka do programowania. Jak byla jakas
    dziwna konfiguracja urzadzen to zostawala po programowaniu

    Tak a propo: duzo modeli ma bootloader. Jak odpowiednio
    ustawisz piny (i ewentualnie flagi konfiguracji) to
    bootloader startuje po resecie. Niezaleznie od tego czy
    bootloader wystatartowal mozesz programowac przez STlink
    (SWD). Ale stan procka sie rozni: bootloader konfiguruje
    niektore urzadzenia.

    --
    Waldek Hebisch

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: