Skocz do zawartości

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


Komentator

Pomocna odpowiedź

7 godzin temu, Gazbi napisał:

To są tylko komentarze.

@Gazbi nie całkiem. Ogólnie to są "tylko" komentarze, ale pamiętaj, że korzystamy tutaj generatora kodu Cube, który bazuje właśnie m.in. na komentarzach. W tym przypadku nie można wklejać kodów w losowe miejsca, trzeba brać pod uwagę komentarze, ponieważ w przypadku złego umiejscowienia kodu może on "wyparować" przy późniejszym przebudowaniu projektu. Zwracaliśmy na to uwagę w kursie wiele raz. Zerknij do tego co jest napisane po fragmencie "dalej rozpoczyna się już główna część automatycznie generowanego projektu" 🙂 

Czy wprowadzałeś w programie jakieś inne zmiany bez zwracania uwagi na automatyczne komentarze? Jeśli nie to wstaw całą zawartość Twojego pliku main.c, lub wyeksportuj cały projekt - sprawdzimy.

Link do komentarza
Share on other sites

Dziękuję za uwagi. Świadomie żadnych zmian nie wprowadzałem. Stworzyłem nowy projekt, we właściwe miejsce wpisałem na nowo polecenia i zadziałało.

 

Tak więc, nie wiem gdzie tkwił błąd.

Link do komentarza
Share on other sites

Najważniejsze, że już działa, a od teraz pamiętaj, aby jednak "przestrzegać" miejsc, w których umieszcza się własny kod. Nie powinno być już żadnych problemów.

Link do komentarza
Share on other sites

Już wiem, gdzie tkwił mój opisany wyżej problem. Bazując na wcześniejszym projekcie próbowałem dokonać zmian poprzez dodanie przycisku. Po skonfigurowaniu USER-BUTTON na pinie PC13 w CubeMX nie kliknąłem Zapisz i Cube nie wygenerował nowego kodu.🤔

Studiuję obecnie ćwiczenie z linijką diodową. Mam pytanie: z czego wynika, że porty PB14 i PB15 nie można zdefiniować jako GPIO Input/Output i pełnią one inną funkcję  niż zakłada to ćwiczenie (PB14- LED10)? Dlaczego w ćwiczeniu nie korzystacie z portów PB0-PB9, tylko od PB5 do PB14? Domyślam się, że był jakiś powód.

Mogę prosić o wyjaśnienie?

Link do komentarza
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

23 godziny temu, Gazbi napisał:

Studiuję obecnie ćwiczenie z linijką diodową. Mam pytanie: z czego wynika, że porty PB14 i PB15 nie można zdefiniować jako GPIO Input/Output i pełnią one inną funkcję  niż zakłada to ćwiczenie (PB14- LED10)?

@Gazbi podaj więcej szczegółów. Co dokładnie znaczy, że nie możesz wykorzystać tych wyjść? Jakie ustawienia masz dostępne dla tych wyprowadzeń? 

Link do komentarza
Share on other sites

29 minut temu, Treker napisał:

@Gazbi podaj więcej szczegółów. Co dokładnie znaczy, że nie możesz wykorzystać tych wyjść? Jakie ustawienia masz dostępne dla tych wyprowadzeń? 

W PB14, po kliknięciu lewym klawiszem rozwija się inne menu niż np. dla PB1 i to mnie zmyliło a z wrażenia nie zauważyłem suwaka. Taki ze mnie Gapcio, przepraszam. Jest jakiś szczególny powód, że wybraliście porty od PB5- PB14?

Link do komentarza
Share on other sites

Główne i najważniejsze kryterium wyboru pinów była taka, aby kolejne diody były podłączone w odpowiedniej kolejności do jednego portu. Bez tego nie byłoby możliwe robienie tych "sztuczek" z przesunięciem bitowym. Oprócz tego PB3 i PB4 są również wykorzystywane do wgrywania i debugowania programów przez JTAG. Zostały więc ominięte, aby nic nie zakłócało działania programu. Nie jest to niezbędne, ale w tym przypadku mamy dostępne dużo wolnych pinów, więc nie musieliśmy się ograniczać.

  • Lubię! 1
Link do komentarza
Share on other sites

Ha, dawno nie było tutaj wpisu - to i ja się pochwalę: odkurzyłem swoją płytkę wreszcie i udało mi się to ćwiczenie z kursu zrobić, wykorzystując wszystkie piny jakie tylko były dostępne. Nie bawiłem się w struktury i tablice, ot po prostu przydługawy switch-case ale działa (ponad 40 LEDów)

Czy ktoś jest w stanie potwierdzić czy da się wykorzystać wszystkie wyprowadzenia portu PA? U mnie nie da się wykorzystać np. jako wyjścia PA2 i PA3 - nie ma żadnego błędu ale po prostu jest stan wysoki i tyle.

Link do komentarza
Share on other sites

Dnia 17.11.2023 o 21:48, mwwojcik napisał:

U mnie nie da się wykorzystać np. jako wyjścia PA2 i PA3

@mwwojcik wskazane przez Ciebie piny są na płytce Nucleo połączone z konwerterem UART-USB. Nie można ich wykorzystywać jako zwykłe GPIO (tzn. jest to możliwe, ale konieczne byłoby usunięcie zworek na płytce - tym samym pozbawisz się komunikacji UART-USB).

Link do komentarza
Share on other sites

(edytowany)

Witam

Mam problem z podłączeniem zewnętrznej diody.

Kod:

399654614_Zrzutekranu2024-01-08173023.thumb.png.8b4556dd765e7d532efb14f9ec886367.png

Zdjęcie płytki:

adce2e4b-da38-4744-841d-335620d1fd97.thumb.jpg.8d305e27f29b4c7b1756a2ed1f660928.jpg

Screen pinów:

1339558919_Zrzutekranu2024-01-08173221.thumb.png.5dc89df102d6233db43a69d8176a7705.png

Nie ma żadnej reakcji po zbudowaniu i zdebugowaniu kodu. LED się nie świeci. Dioda działa bo sprawdzałem. Na płytce podpiąłem do chyba dobrego pinu. 

Z góry dziękuję za odpowiedź. 

 

 

 

Edytowano przez Dirichleta
Link do komentarza
Share on other sites

@Dirichleta w zestawie do tego kursu nie ma baterii 9 V i na pewno nie powinieneś jej używać w tym projekcie, bo spalisz płytkę z STM32 - możliwe, że już to zrobiłeś. Odłącz całkowicie baterię i podłącz układ zgodnie ze schematem w kursie, czyli katoda do masy z Nucleo, a dioda przez rezystor do odpowiedniego pinu STM32. Sposób podłączenia znajdziesz na ilustracji podpisanej "Lokalizacja pinów używanych w ćwiczeniu".

Link do komentarza
Share on other sites

Witam.

Ode mnie pytanie trochę z innej beczki. W tej części kursu cały czas używamy specjalnie utworzonej zmiennej typu GPIO_PinState jako drugi argument funkcji HAL_GPIO_WritePin(). Czy są jakieś przeciwwskazania żeby zamiast tworzyć taką zmienną od razu podać jako ten argument 1/0 lub true/false?

Przykładowo:

HAL_GPIO_WritePin(LED1_GPIO_Port, LED1_Pin, 1);

Efekt taki sam, więc pytanie tylko czy mogą wyniknąć z takiej prostoty komplikacje lub mniejsza czytelność kodu?

Btw. świetne kursy, robicie dobrą robotę

  • Lubię! 1
Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • 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.