Jesteś moim idolem, męczyłem się przez godzinę z kodem, a okazało się, że źle skonfigurowałem płytkę w ustawieniach. Dzięki wielkie.
@mightyaldenham30694 жыл бұрын
Piotrze, masz świetne poradniki - zwięźle zrobione tak, że chce się je oglądać. A szczegóły, wiadomo, najlepiej doczytać samemu. Przy okazji UART przydałby się jeszcze odcinek właśnie z obsługi Wi-Fi (np. z ESP8266, jak już kolega wspomniał) i Bluetooth. Ja i grono Twoich fanów będzie Ci pewnie bardzo wdzięcznych. No i jeśli już mamy koncert życzeń, to sterowanie silnikami przez np. LM298 też by się przydało ;)
@PiotrDuba4 жыл бұрын
O Bluetooth planuję niedługo zrobić odcinek, z WiFi zobaczymy
@marianmarian43783 жыл бұрын
@@PiotrDuba Może już bardziej do przodu i na ESP32?
@smiechu472 жыл бұрын
Jeśli po kliknięciu z ctrl na nazwę funkcji otwiera się wam jej definicja, to kliknijcie na nią jeszcze raz to otworzy się deklaracja.
@donezee3 жыл бұрын
Trochę kosmos dla początkującego, zabrakło mi jakiejś grafiki pokazującej co z czym i do czego w tych wszystkich funkcjach. Ogólnie wielki szacun, za zrobienie tego kursu, dzięki :)
@eR-MIK Жыл бұрын
Próbowałeś odbioru z caalback (18:45) przy 921600 bloków kilkuset bajtów? Nie wyłączał Ci się czasem odbiór z uarta z powodu błędów transmisji? Nie obsłużyłeś błędów więc taka możliwość istnieje.
@matanjagiz4248 Жыл бұрын
Fajne dzięku!
@szymontrembecki90654 жыл бұрын
Zamiast liczyć znaki można zastosować strlen() z string.h
@andrzejkmiecik67654 жыл бұрын
Cześć, dlaczego w STM32CubeIDE 1.3.1 aby skompilować i uruchomić twój projekt muszę: a) dodać bibliotekę stdio.h w includach (pewnie trzeba, u ciebie tego nie widać) b) wywołanie funkcji musi przyjąć postać: dl_kom=sprintf((char*)komunikat, "DIODA ON "); Filmy są naprawdę fantastyczne. Proszę o więcej!
@PiotrDuba4 жыл бұрын
Dzięki :D Co do pytań - to są kwestie samego C. Powinno skompilować, tylko z ostrzeżeniami odnośnie typów - sprintf przyjmuje tam stricte wskaźnik na zmienną char, a komunikat jest typu uint8_t, ale w sumie w tym przypadku to to samo. Dodatkowo takie użycie tablicy wskazuje właśnie na adres jej 1. elementu - dlatego to działa, ale żeby było bez ostrzeżeń można właśnie jawnie zrzutować typy (char *). A w stdio.h jest deklaracja sprintf. Zaktualizowałem kod na repo, żeby było przejrzyściej
@mac18444 жыл бұрын
A jak mam wszystko tak samo ale w ostatnim kroku przy sprawdzaniu w realTerms nic mi nie wyskakuje i nie mogę nic wysłać to coś mogę zrobić?
@bartoolina4 жыл бұрын
Czy Callback jest wywoływany W TRAKCIE przerwania, czy po? Pytam, dlatego że nie użyłeś "volatile" przed zmienna, a i tak wszystko działa.
@PiotrDuba4 жыл бұрын
W tym przypadku korzystamy z niej tylko podczas obsługi przerwania. Gdybyśmy chcieli też korzystać z niej w innym miejscu w kodzie jednocześnie, np. w funkcji main, wtedy koniecznym jest dodanie "volatile" przed typem zmiennej - informując kompilator, żeby dostęp do niej nie podlegał optymalizacji. Inaczej program działałby niepoprawnie
@widzetotakbrak21738 ай бұрын
Ide do wbudowanych to jakaś prehistoria niestety :) ale kursik super
@jakubkonador40634 жыл бұрын
Hej, czy mógłbyś wytłumaczyć rolę wskaźników przed 'husar't oraz'znak'?
@PiotrDuba4 жыл бұрын
Mówisz o wywołaniu funkcji odbioru z UART-a w 9:50? Funkcja zgodnie z dokumentacją przyjmuje wskaźnik (czyli adres gdzie znajduje się zmienna) a nie jej wartość. Dlatego dodajemy symbol "&", który pobiera adres pamięci - pod którym znajduje się zmienna. Dzięki temu funkcja HAL_UART_Receive_IT() może wpisać odebrany bajt(bajty) bezpośrednio pod wskazany przez nas adres pamięci, unikając przy tym kopiowania wartości zmiennej
@jakubkonador40634 жыл бұрын
@@PiotrDuba teraz już rozumiem, dzięki
@sylwesterpaluch9773 Жыл бұрын
Witaj. Mam podkładkę pod myszkę Asus Balteus QI. podkładka jest na mikrokontrolerze STM32F i prawdopodobnie uszkodził się firmware. Powiedz czy można z innej podkładki wyciągnąć firmware (poprzez USB - bo tak się aktualizował) a nie chcę koledze rozdłubać podkładki i wgrać do mojej??? obecnie po wpięciu do komputera pojawia się komunikat że urządzenie ma awarię. Dzięki z góry za jakąś podpowiedź.
@awocrf Жыл бұрын
Nie mam tej podkładki ani doświadczenia ze zgrywaniem firmware ale spróbuj poszukać "stm32 firmware dump" albo coś w tym stylu
@michakalwasinski79024 жыл бұрын
Cześć na początek chciałem podziękować za Twoje filmy są świetne! Może Ty mi pomożesz muszę wysłać komende poprzez uart do mp3 Playera dfr0534. Przyjmuje komendy tylko w postaci szesnastkowej np AA 07 00 08 BB
@PiotrDuba4 жыл бұрын
Dzięki :D Zapraszam na grupę najlepiej z pytaniami ;) facebook.com/groups/estmki
@RobotnikzSanoka5 жыл бұрын
Mam problem z tematem komunikacji stm nucleo z modułem wiifi esp8266 i jak zaprogramować ten układ do wysyłania danych po wi-fi i przyjmowania nastaw od użytkownika również po wi-fi. Czy temat jest ciekawy do podjęcia go w filmie, albo doraźnie odpowiedzenia w komentarzu? Z góry dziękuję!
@PiotrDuba5 жыл бұрын
W przyszłości myślę, że coś o ESP8266 nagram. A tak krótko, to komunikacja z nim odbywa się po UART za pomocą komend AT. Tylko musisz znaleźć plik z komendami wspieranymi przez wersję Twojego układu. Możesz podłączyć się przez UART przez górną cześć Nucleo - złącze podpisane TX, RX - i komunikować się testowo bezpośrednio z komputer, np. przy pomocy RealTerma
@michakozinski1445 жыл бұрын
Witaj Piotrze, czy możesz mi wyjaśnić dlaczego STM32CubeIde z jednego polskiego znaku "ą" (znak o kodzie 0xb9) robi dwa znaki char o kodach 0xc4 i 0x85. Definiuję tablicę char w ten sposób (ma być więcej liter ale dla uproszczenia zostawiłem jedną): char znaki[] = {"ą"}; a po kompilacji otrzymuję: znak[0] = 0xc4 znak[1] = 0x85 znak[2] = 0x00 - to jest oczywiste. przy kompilacji otrzymuję warningi: warning: large integer implicitly truncated to unsigned type [-Woverflow] warning: multi-character character constant [-Wmultichar] Muszę poszczególne znaki porównywać z kodami w innej tablicy. Na AVR ta sama funkcja działała poprawnie. Jak sobie z tym poradzić?
@PiotrDuba4 жыл бұрын
Wpisz kod znaku bezpośrednio \x[kod znaku], czyli w tym przypadku: char znaki [] = {'\xB9'};
@JackJack-xj8ei3 жыл бұрын
W edytorze masz ustawione kodowanie unicode (utf8), tam znaki mają różną długość, 1, 2, 4 lub i więcej bajtów. Zmień w ustawieniach na kodowanie latin2 (ISO-8859-2) lub inne, zawierające polskie znaki. Wtedy będzie działać. Ale z tymi kodowaniami to czasami jest różnie, raz otworzysz plik w innym programie i już się przestawi. Dlatego rzeczywiście lepiej bezrośrednio pisać kod znaku.