Skocz do zawartości
Komentator

Kurs STM32 F4 - #4 - Pierwszy projekt, GPIO, przerwania

Pomocna odpowiedź

@Fortuide, witam na forum 😉 Widzę, że to Twoje pierwsze kroki na Forbocie, oto najważniejsze informacje na start:

  • Chcesz przywitać się z innymi członkami naszej społeczności? Skorzystaj z tematu powitania użytkowników.
  • Opis najciekawszych funkcji, które ułatwiają korzystanie z forum znajdziesz w temacie instrukcja korzystania z forum - co warto wiedzieć?
  • Poszczególne posty możesz oceniać (pozytywnie i negatywnie) za pomocą reakcji - ikona serca w prawym dolnym rogu każdej wiadomości.

3 minuty temu, Fortuide napisał:

Witam, mam problem z zadaniem domowym. Mianowicie po dodaniu w CubeMX, pozostałych diód(PD14,PD13,PD12) oraz po dodaniu kodu mającego zapalać oraz je gasić w zadanej kolejności lista adresów w ST-LINKu zmienia mi się na pojedyńczą wartość tak jak widać poniżej, a sam program nie działa zupełnie. Przejrzałem lekcję kilka razy i nie umiem znaleźć rozwiązania

To prawdopodobnie błąd wynikający z aktualizacji jakiegoś oprogramowania, bo od kilku dni inne osoby też zgłaszają podobne problemy. Zbadamy temat 🙂 Daj tylko znać, z której wersji środowiska korzystasz.

Udostępnij ten post


Link to post
Share on other sites

STM32CubeMX - 5.1.0, Eclipse  - 4.11.0, ST-LINK Utility 4.4.0.0,  Workbench - 2.8.0

Udostępnij ten post


Link to post
Share on other sites

Po pierwsze:

- w nowych wersjach Workbencha nie jest domyślnie generowany plik BIN, natomiast można wgrywać spokojnie HEX-a, jak ktoś już wyżej zauważył;

po drugie:

- błąd, o którym pisze Fortuide jest mi znany. Już na pierwszy rzut oka widać, że w Twoim HEX/BIN nie ma nic użytecznego. Porównaj sobie zawartość pamięci uC ze skompilowanym programem w ST-Linku [Target | Compare...], prawdopodobnie wyskoczy błąd. Walczę z tym ciągle: u mnie wygenerowany HEX waży około 1kb i nie działa (kompilacja, wgranie - wszystko przebiega bez problemów), natomiast w przypadku poprawnie wygenerowanego pliku jego waga to około 50 kb dla przykładów z pierwszych lekcji.

Jeśli ktoś ma jakiś pomysł, chętnie wysłucham - niesamowicie jest to frustrujące. Pewnie popełniam gdzieś głupi błąd, natomiast narzędzia nie dają żadnej wskazówki, gdzie powinienem go szukać.

BTW - cześć, to mój pierwszy post ;)

Udostępnij ten post


Link to post
Share on other sites

@lk1988 witamy na forum!

Problem który masz i który zgłasza wiele osób jest najwyraźniej wynikiem błędnego działania nowej wersji generatora. Sam sprawdzałem CubeMX pod względem różnych przypadków edycji kodu/importowania projektu/wtórnej modyfikacji projektu CubeMX i nie doszedłem od czego zależy czy plik hex wygeneruje się poprawnie. Zdarzało się, że po 2 czy 3 kompilacji Workbench zacinał się w sobie i nie dawał już więcej poprawnych wyników.

Tak jak jest podane w instrukcji na stronie ST – niestety ale CubeMX i Workbench nie są w pełni kompatybilne. Możliwe, że użycie poprzednich wersji (przed tą dużą zmianą) rozwiązuje problem.

Udostępnij ten post


Link to post
Share on other sites

Ok, jak dla mnie sytuacja jest już jasna. Utworzyłem projekt zgodnie z kursem, dodałem diody wszystko było pięknie. Później dodałem przycisk i długość programu spadła do 8 bajtów.

Błąd pojawia się w losowym momencie, w każdym razie takie podejście: wygenerować kod, pozmieniać, wygenerować znowu po prostu nie działa. Jak wiele razy już pisałem CubeMX jest zupełnie nic nie wart, a używanie go ma w sobie coś z uroku rosyjskiej ruletki.

To co się dzieje nie ma związku z kompatybilnością, ani SW4 po prostu programiści CubeMX nie potrafią napisać dobrego programu, więc co chwila są błędy - teraz jest taki, który kasuje zawartość pliku linkera, za chwilę będzie inny.

Proponuję poszukać pliku o rozszerzeniu .ld - normalnie ma ok 6k, a jak się kilka razy wygeneruje projekt do jego długość spada do zera. Dlatego i skompilowany program jest krótki...

Rozwiązaniem jest użycie starszej wersji CubeMX, poczekanie na następną - może będzie lepsza. Ale najlepiej już teraz wyrzucić CubeMX do kosza i pisać programy samemu.

Przy okazji - czy ktoś zwraca uwagę na komentarz w wygenerowanym przez CubeMX pliku? Proponuję dokładnie przeczytać... jest tam coś o prawach autorskich, które ma ST - w tym do naszego programu, jeśli go dopisujemy do wygenerowanego szablonu. Całkiem sprytne posunięcie ze strony tego ST 🙂

  • Lubię! 2
  • Nie zgadzam się! 1

Udostępnij ten post


Link to post
Share on other sites

Przyznam szczerze, że sama idea korzystania z Cube'a średnio mi się podoba, bo nie rozumiem do końca, co się dzieje, a jakbym chciał iść tą drogą, to kupiłbym sobie Arduino 😛

AVR-y jednak były nieco bardziej przejrzyste, bo wszystko robiło się "from scratch". Są jakieś materiały, jak się zabrać do programowania bez CubeMX? Instalować starszej wersji nie zamierzam, skoro ST nie gwarantuje kompatybilności, to rzeczywiście lepiej będzie porobić to samemu, zwłaszcza że to tylko hobby.

Udostępnij ten post


Link to post
Share on other sites

@Elvis to o czym piszesz "podejście: wygenerować kod, pozmieniać, wygenerować znowu po prostu nie działa"

u mnie też nie działa bo ja wyraźnie napisałem :

"W ten sposób mogę mieć kilka projektów pracować na nich ale konfiguracji pinów ponownie przez Cube na danym projekcie nie zmieniam. "

 

projekty.thumb.jpg.2780ef192d06ba8e8a903597ed20ae11.jpg

tu wyraźnie widać foldery trzech projektów. W każdym plik .hex mogę wgrać przez ST-link i działa. Natomiast jeśli wgrywam przez SW projekt interrupt

interrupt.thumb.jpg.11706fad5d2fcecc937752737b92315f.jpg

to wskakuje coś takiego. Pozostałe dwa wgrywają się poprawnie przez SW. 

Udostępnij ten post


Link to post
Share on other sites

@slon nie wiem dlaczego u Ciebie nie działa, ciężko mi jest telepatycznie odgadnąć co np. będzie wyświetlone po kilknięciu na przycisk "Details >>".

Spróbowałem postępować tak jak nakazuje kurs, po kilku chwilach okazało się że CubeMX usuwa zawartość skryptu linkera - to tłumaczy dlaczego program ma 8 bajtów i nie działa.

Co jeszcze CubeMX psuje tego nie wiem, ja z nim miałem różne przejścia. Od zawieszania po wstawianie \n\t na końcu linijek - nie jako kody, ale dokładnie takie napisy.

  • Nie zgadzam się! 1

Udostępnij ten post


Link to post
Share on other sites

Wracając do problemów z kompilacją projektów, które zostały edytowane w Cube. Zapytałem u źródła, czyli w ST. Jest to błąd środowiska, został już jakiś czas temu wykryty i zgłoszony do naprawy. Najbliższe aktualizacje powinny rozwiązać ten problem, nie znam jednak konkretnych dat. Na ten moment można posiłkować się ręcznym rozwiązaniem, którego polega na kopiowaniu pliku linkera (gdy jest jeszcze dobry) i jego późniejszym wklejaniu w miejsce nowego, pustego pliku.

Udostępnij ten post


Link to post
Share on other sites
Dnia 9.04.2019 o 15:49, Elvis napisał:

Ok, jak dla mnie sytuacja jest już jasna. Utworzyłem projekt zgodnie z kursem, dodałem diody wszystko było pięknie. Później dodałem przycisk i długość programu spadła do 8 bajtów.

Dzięki za potwierdzenie moich podejrzeń. Każdy projekt zrobiony z pluginem 5.1 tak się właśnie u mnie zachowuje, znika realna wielkość po kompilacji, zostaje 8 bajtów. Zacząłem się tym bawić kilka tygodni temu i nie wiedząc co robię źle wrzuciłem płytkę do lodówki. To samo mam z Blue PILL, Nucleo i STM32F407VET6. Dzisiaj podjąłem walkę od nowa, zainstalowałem AC6, a potem wersję niezależną cubeMX 5.2.1 i na razie sobie radzi ze zmianami, ale projekt zepsuty pluginem już zostaje zepsuty. Projekty nieuszkodzone można było przenieść do nowszej wersji opcją "Migrate".

Jak ktoś ma linka do starszego/nowszego pluginu, który działa prawidłowo z Eclipse/AC6 SystemWorkbench to proszę o info. I może dodać ostrzeżenie o tym do kursu, bo ze strony STM nie można raczej ściągnąć innej wersji?

  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites

Doszedłem do wniosku, że szkoda zachodu na Cube'a.

Po pierwsze - nie działa, jak trzeba (a przynajmniej nie zawsze - brak przewidywalności jest ogromną wadą).

Po drugie - nie do końca wiadomo, co on tam pod maską wyprawia. No, ok - można sobie sprawdzić w wygenerowanych plikach, ale to chyba nie o to chodzi.

Po trzecie - satysfakcja z własnego rozwiązania problemu i konfiguracji jest nieporównywalnie większa 😉

Tak więc - każdemu polecam olać CubeMX i czerpać z STM32 pełnymi garściami!

Udostępnij ten post


Link to post
Share on other sites

@lk1988 teoretycznie masz rację i wielu przypadkach tak się da ( @Elvis zaraz pewnie potwierdzi), ale warto mieć na uwadze, że CubeMX może być nieodzowny przy większych układach. Konfiguracja zegarów bardziej rozbudowanych mikrokontrolerach może być już dużym wyzwaniem. Zdecydowanie łatwiej wyklikać wtedy ustawienia myszką w CubeMX 😉

Udostępnij ten post


Link to post
Share on other sites
(edytowany)

Potwierdzam pierwszą część, ale nie zgadzam się że jest nieodzowny 😉 Nawet z zegarami lepiej sobie poradzić bez niego, chociaż może być pomocny jako kalkulator - o ile akurat działa. A przy okazji polecam przeczytać komentarz na początku wygenerowanego przez CubeMX kodu... Prawa autorskie do pliku z funkcją main ma ST.

Edytowano przez Elvis
  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites

Chyba pomyliło ci się Cube z CubeMX. Można używać Cube HAL nie dotykając CubeMX. Inna sprawa że TCP bazuje na lwIP, więc nie ma potrzeby nawet HAL dotykać. A co do USB to w przypadku device czemu nie zrobić samemu, to wcale nie takie trudne.

  • Lubię! 1
  • Nie zgadzam się! 1

Udostępnij ten post


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!

Gość
Dołącz do dyskusji! Kliknij, aby zacząć 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...