Skocz do zawartości

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


Komentator

Pomocna odpowiedź

Cześć,

Mam problem przy kompilacji pierwszego programu. W konsoli po kliknięciu na builda wyświetla mi błąd "make: *** No rule to make target `clean'.  Stop.". Zdążyłem po necie już popatrzeć, że to potencjalnie może być problem z brakiem lub błędami w makefile'u. Coś ktoś wie jak to rozwiązać?

EDIT: Po rozwinięciu okna błędu do detali pojawia się jeszcze komunikat "Invalid thread access".

Edytowano przez PrimeSoul
Link do komentarza
Share on other sites

Yup, dokładnie tego samego. Nawet system mam Win10, choć początkowo planowałem zrobić kurs na Ubuntu.

Dzisiaj w wolnej chwili spróbuję zrobić reinstalację wszystkiego, co wczoraj wgrywałem.

Informacja, jaka może być jeszcze przydatna, to fakt, że korzystałem z czystego Eclipse z dwoma plug-in'ami (System Workbench + CubeMX), zamiast gotowego, skonfigurowanego Eclipse'a ze strony ST. Dzisiaj zamierzam zrobić podejście już na gotowcu + Cube'a jako oddzielny program, może tym razem pójdzie bez problemów.

EDIT: Jak powiedziałem, tak zrobiłem. I tym razem działa. Szkoda, bo liczyłem na to, że będę miał jednego Eclipse'a skonfigurowanego zarówno pod STMy i AVRy, ale nie jest źle, można przeżyć.

EDIT2: Kolejny problem - po wgraniu pierwszego programu, następne wgrywania są ... puste. Mam namyśli, że gdy już wygeneruję plik *.hex (a generowałem ich mnóstwo), to potem wrzucam go do ST-linka i startuję programming. Czas wgrywania trwa 0s 0ms, a zachowanie STMa się nie zmienia, tzn. działa tak, jakby program nie został wczytany na mikrokontroler. "Erase chip" z ST-linka zadziałał i usunął poprzedni program, ale to też nie pomogło przy wgrywaniu nowego. Ktoś coś wie na ten temat?

EDIT3: Problem z edit 2 leży w CubeMXie. Przeczesałem komentarze wcześniejsze i zasugerowany nimi spróbowałem zrobić od nowa konfigurację sprzętową. Zadziałało od razu. No i każda edycja kodu daje radę do momentu, gdy próbuję zmienić cokolwiek w projekcie w CubeMXie. Jest na to jakaś recepta czy trzeba się z tym męczyć?

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

20 godzin temu, PrimeSoul napisał:

EDIT3: Problem z edit 2 leży w CubeMXie. Przeczesałem komentarze wcześniejsze i zasugerowany nimi spróbowałem zrobić od nowa konfigurację sprzętową. Zadziałało od razu. No i każda edycja kodu daje radę do momentu, gdy próbuję zmienić cokolwiek w projekcie w CubeMXie. Jest na to jakaś recepta czy trzeba się z tym męczyć?

Tak jak wspomniałeś - jest to błąd w CubeMX. Błąd jest znany i miał być naprawiony, jak widać trwa to już długo. Nie ma żadnego rozwiązania, które pozwoliłoby obejść ten problem. Jedyna opcja to ręczne skopiowanie dobrego pliku ".ld". Na początku powinien mieć kilka kB, później jego rozmiar spada do 0B (i wtedy właśnie pojawiają się problemy). Można ręcznie nadpisywać ten plik (pierwotną, działającą wersję), wtedy całość powinna działać poprawnie.

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

 Po napisaniu pierwszego programu ( HAL_GPIO_WritePin(GPIOD, GPIO_PIN_15, GPIO_PIN_SET) ) i skompilowaniu wyskakują mi błędy jak poniżej. Kompletnie nie wiem co mam robić. To mój pierwszy raz mikrokontrolerami STM32 i zupełnie się w tym nie orientuję. W internecie nie znalazłem rozwiązania tego problemu. 

obraz.png

Edytowano przez MichalBien
Link do komentarza
Share on other sites

Cześć,

Używam do kursu układu STH32f4-DISC1

Mam taki problem, że nie ważne jaki kod napiszę i jaką czynność chcę wykonać to włącza mi się jedynie reagująca na guzik RESET dioda VBUS. Wcześniej udało mi się raz włączyć diodę PG13 ale od tej pory jedyne co się dzieje to ta świecąca się dioda od złącza USB USER.

Link do komentarza
Share on other sites

Czy jak wgrywasz program, to za każdym razem w ST-Link masz tak dużo adresów jak na obrazku czy tylko jeden? Używasz Cuba jako oddzielny program czy nakładka na eclipse ?

 

stlink.png

Edytowano przez MichalBien
Link do komentarza
Share on other sites

Cześć,

Jeśli ktoś ma problemy z kompilacją pierwszego programu za pomocą środowiska Workbench polecam zainstalowanie STM32CubeIDE.

Jest środowiskowo które łączy STMCubeMX i środowisko programistyczne oparte na Eclipse. Więc w zasadzie te same narzędzia, które autor proponował w kursie. U mnie zadziałało od strzała pewnie dla tego, że jest to jedno zintegrowane środowisko stworzone przez STMicroelectronic. Wydaje mi się, że cały kurs da się zrobić na podstawie tego narzędzia. Warstwa merytoryczna związana z samy programowaniem STM32F4 za pomocą HAL powinna być identyczna. Oprogramowanie jest darmowe

Link

Pozdrawiam

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

Pobrałem środowisko Stm32CubeIde po konfiguracji pinów wygenerowanych kod jest zawsze z błędem niezależnie od płytki lub procesora który wybieram. Miał ktoś podobny problem? Podpowiedz wskazuje na problem z znalezieniem plików w workspace, ale nie wiem co powinienem z tym zrobić.

błąd kodu :

make -j8 all 
arm-none-eabi-gcc -o "LD2.elf" @"objects.list"   -mcpu=cortex-m4 -T"C:\Users\PaweĹ‚\STM32CubeIDE\Nowywkorkspace\LD2\STM32F303RETX_FLASH.ld" --specs=nosys.specs -Wl,-Map="LD2.map" -Wl,--gc-sections -static --specs=nano.specs -mfpu=fpv4-sp-d16 -mfloat-abi=hard -mthumb -Wl,--start-group -lc -lm -Wl,--end-group
c:\st\stm32cubeide_1.3.0\stm32cubeide\plugins\com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.0.0.201904181610\tools\arm-none-eabi\bin\ld.exe: cannot open linker script file C:\Users\Pawe??\STM32CubeIDE\Nowywkorkspace\LD2\STM32F303RETX_FLASH.ld: No such file or directory
collect2.exe: error: ld returned 1 exit statusmake: *** [makefile:44: LD2.elf] Error 1
"make -j8 all" terminated with exit code 2. Build might be incomplete.

 

Link do komentarza
Share on other sites

@Zwyczajeimie witam na forum 🙂 Wydaje mi się, że problemem może być Twoja ścieżka do środowiska, a konkretnie polski znak "ł" w nazwie użytkownika. Zwróć uwag, że nawet w opisie błędu są w tym miejscu złe znaki.

Link do komentarza
Share on other sites

Zastanawia mnie taka rzecz, przejrzałem poprzednie komentarze i nie zauważyłem, żeby ktoś zwrócił na to uwagę. Otóż, robiliśmy definicję funkcji HAL_GPIO_EXTI_Callback() natomiast jest to jej deklaracja po za funkcją main. W main'ie próżno jej szukać. Przeglądałem inne funkcje wywoływane w main'ie i nigdzie nie ma odwołania do tej funkcji a mimo wszystko działa tak jak powinno. Gdzie jest haczyk? Wg mojej wiedzy o mikrokontrolerach taka sytuacja nie powinna się wydarzyć, a jednak się zdarzyła.

Link do komentarza
Share on other sites

@MSawicki witam na forum 🙂 Nie wiem czy dobrze zrozumiałem pytanie, ale funkcja typu "HAL_GPIO_EXTI_Callback" reaguje na konkretne przerwanie sprzętowe, więc nie trzeba jej "ręcznie" nigdzie wywoływać. Układ jest skonfigurowany w taki sposób, że w momencie wystąpienia przerwania automatycznie wywołuje konkretną funkcję. Właściwie na tym polega jedna z większych zalet przerwań.

  • Lubię! 1
Link do komentarza
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.