Skocz do zawartości

Kurs STM32L4 – #3 – wejścia/wyjścia, czyli GPIO w praktyce


Pomocna odpowiedź

@RadioDzab dziwne, chyba coś w projekcie się pomieszało. Daj menu-project-clean i tu clen:

image.thumb.png.8625bc85474691f80c8445ae94fe8e1d.png

Później dla pewności jeszcze raz build (Ctrl-B)

 

a i upewnij sięże w pliku main.c jest podlinkowane:

/* USER CODE END Header */
/* Includes ------------------------------------------------------------------*/
#include "main.h"

 

Edytowano przez Gieneq
Link to post
Share on other sites
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

@RadioDzab no tak, nazwa się nie zgadzała. W takich sytuacjach najlepiej zacznij pisać coś np LED1 i później wciśnij Ctrl+spacja i zobacz czy IDE coś podpowiada.

  • Lubię! 1
Link to post
Share on other sites

Dziękuję za kurs.

Nie wiem, czy to kwestia ustawień, ale w poniższej kolejności zdarzeń IDE usuwa mi zawartość pętli while(1) z main().

  1. Wybranie, opisanie portów
  2. Wpisanie kodu źródłowego
  3. Zaprogramowanie Nucleo i radocha z działania
  4. OK, jednak potrzeba zmian, np. dodanie Pull-up do portu, więc działanie na Device Configuration Tool (zmiany będą w pliku .ioc), klik na Save
  5. Po powrocie do kodu źródłowego widzę, że pętla while(1) jest pusta

Mogę się na to zgodzić dopóki mam tam kilka linii, ale co jeśli chciałbym, żeby IDE mi tego nie ruszało? Czy są jakieś ustawienia odpowiedzialne za to zachowanie? A może takich zmian dokonywać bezpośrednio w pliku? A jeśli tak, to w którym pliku zlokalizowane są inicjacje pull-up/pull-down itp?

---EDIT---

No tak, pull-up/pull-down jest w pliku main, wszystko jest poniżej we funkcji MX_GPIO_Init(), właśnie doczytałem.

--EDIT2--

W zapędzie edycji kodu źródłowego mój kod w petli while(1) wylądował poza 

/* USER CODE END WHILE */

i dlatego IDE usuwało mi kod. 

Problem rozwiązany.

Edytowano przez smilee
Odpowiedz na zapytanie
Link to post
Share on other sites

 

19 godzin temu, smilee napisał:

W zapędzie edycji kodu źródłowego mój kod w petli while(1) wylądował poza 

@smilee tak, to jest częsta przyczyna takiego zachowania, fajnie że udało Ci się z tym uporać 🙂 

Link to post
Share on other sites

Kurs bardzo szybko się czyta. Na razie nie mam jak realizować ćwiczeń, ale to się szybko zmieni. Mała uwaga redakcyjna. W tresci czytamy: "Pierwsza to sprzętowa eliminacja przerwań." Autor miał na myśli drgania. Pojęcia "drgania" i "przerwania" nie możemy stosować zamiennie. Taki czeski błąd, który chyba warto poprawić. 

EDIT: Przeczytam 4 strony komentarzy i chyba jeszcze nikt nie zwrócił na to uwagi. Jeśli jednak coś przeoczyłem, to proszę o wyrozumiałość, bo zbliża się północ i mózg błaga o odpoczynek... 

Edytowano przez pmochocki
  • Lubię! 1
Link to post
Share on other sites

Cześć wszystkim!

Zacząłem sobie robić właśnie ten kurs STM, ale poległem niestety przy podłączaniu zewnętrznej diody. Otóż w ogóle się ona nie świeci. Czy ktoś ma może jakiś pomysł co może być przyczyną? 

Konifguracja pinu:

1.thumb.png.27e6dcb41374d6a014792c46a92f46a2.png

Kod programu (bardzo ubogi bo chciałem tylko zaświecić w końcu diodę...)

351368699_Greenshot2021-11-1623_29_52.thumb.png.430a646183dc67f380965322744a5dcd.png

Połączenia na płytce:

IMG_6602.thumb.jpg.6e005243e14877c96c944b3f2fae5f5d.jpg

Próbowałem już różnych diod, kabli czy rezystorów, instalowałem IDE na dwóch komputerach i niestety nic się nie dzieje.

 

Będę bardzo wdzięczny za pomoc.

Pozdrawiam

Link to post
Share on other sites

Witam

Na początku bardzo dziękuję za kurs, właściwie za wszystkie kursy. Szerzenie wiedzy wśród społeczeństwa to jedna z najwyższych form patriotyzmu(według mojej oceny).

Mam pytanie odnośnie nawiasów klamrowych przy funkcji "if" znajdującej się wewnątrz innej funkcji "if", przedostatnia wersja linijki led zawiera nawiasy klamrowe przy funkcji sprawdzającej zakres "led". I przy takiej wersji program nie działał poprawnie (działanie drugiego przycisku było zakłócone. W ostatecznej wersji tych nawiasów już nie ma i program działa prawidłowo. Czy mógłbym prosić o wyjaśnienie? 

Pozdrawiam

Link to post
Share on other sites

@tomasmonk możesz wskazać konkretny kod programu, wiem że napisałeś ale kurs jest ogromny i ciężko to znaleźć. 

Link to post
Share on other sites

Witam

Poniżej kod z nawiasami klamrowymi

image.thumb.png.9eb236b34bb532594c7294ebfc3eca21.png

A tutaj bez:

image.thumb.png.0f5b01b02b4200bfb3f1aaa0a64e7e97.png

Generalnie to bym nie zwrócił uwagi ale w wersji z nawiasami jak wspomniałem nie działało poprawnie i szukałem przyczyny. Notabene to takie szukanie też dużo uczy.

 

image.png

Link to post
Share on other sites

@tomasmonk a weź finalną wersję kodu i wyrzuć nawiasy. Nawiasy dla warunku z 1 linią nie mają żadnego oznaczenia i nie chce mi się wierzyć, że to one powodują problem. Te 2 kody różnią się od siebie stąd ewentualne inne zachowanie.

Link to post
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.