Skocz do zawartości

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


Komentator

Pomocna odpowiedź

U mnie to samo z błędem

Symbol 'SysTick_IRQn' could not be resolved main.c /01_GPIO/Src line 129

Usunąłem projekt i zrobiłem nowy w kolejności jak w kursie i błąd zniknął.

I to samo na 2 kompie - tam też nie miałem błędu.

Gdy dodałem nowe LEDy w CubeMX to znowu nie mógł rozpoznać zmiennych LED_Green_GPIO_Port, LED_Green_Pin itd. dopiero po odświeżeniu plików projektu błędy zniknęły.

Kolejna rzecz to zadanie domowe:

Napisałem sam, później wgrałem plik binarny z kursu i nie przełączało mi diod tak płynnie jak na filmie z kursu. Wydaje mi się, że brakuje filtrowania sygnału z przycisku lub funkcji Debounce.

Czy na schemacie płytki (UM1842 na str. 33 - schemat przycisku PA0) przy C36 [NA] nie oznacza not available - czyli nie ma filtrowania sygnału z przycisku i dlatego po naciśnięciu przycisku program przechodzi o kilka kroków na raz (zmienna state).

Podzieli się ktoś spostrzeżeniami?

Link do komentarza
Share on other sites

Witam

Bardzo dziękuję za świetny kurs, lekko napisany o bardzo praktycznym przekazie bo chyba oto chodzi 🙂

Osobiście ściągnąłem gotowego eclipsa ze strony projektu więc nie musiałem instalować wtyczek

Mam dwie uwagi jak zwykle diabeł tkwi w szczegółach miałem znaczne dwa problemy

1. problem z kompilacją tak jak wcześniej już było napisane z funkcją.

 /* SysTick_IRQn interrupt configuration */
 HAL_NVIC_SetPriority(SysTick_IRQn, 0, 0);

rozwiązaniem jest odhaczenie w MXcube w opcjach generowania projektu opcji "Generate Under Root"

Chciałbym się dowiedzieć do czego jest ta opcja i co ona powoduje ?

2. Drugą większą bolączka było to że po skompilowaniu nic się nie działo przeciągam binarkę do stm utilyty programuję i nic się nie dzieje.

Rozwiązanie było "klasyczne dla Eclipse" przed kompilacją domyślnie projekt nie jest zapisywany aby to zrobić należy wejść w

Window --> Preferences,

rozwijamy zakładkę

General, klikamy na

Workspace i zaznaczamy

Save automatically before build.

Spowoduje to po kliknięciu w młotek zapis wszystkich plików projektu i kompilację.

Z niecierpliwością czekam na możliwość wgrywania bezpośrednio z Eclipsa, zapewne wygoogluje to bo jestem niecierpliwy.

Co do przycisku to przycisk ma wysoką "gałkę" sprzyja to drganiom, poza tym można dodać opóźnianie, wiem że wykorzystując DMA może to nie najbardziej optymalne rozwiązanie ale powinno być lepiej.

Pozdrawiam

Link do komentarza
Share on other sites

Gdy dodałem nowe LEDy w CubeMX to znowu nie mógł rozpoznać zmiennych LED_Green_GPIO_Port, LED_Green_Pin itd. dopiero po odświeżeniu plików projektu błędy zniknęły.

Tak, po dodaniu własnych etykiet do Cube, aby wszystko działało trzeba przeprowadzić "procedurę naprawczą", a więc wykonać:

Project->Clean

Project->C/C++ Index -> Rebuild

Project->C/C++ Index -> Freshen All FIles

Wydaje mi się, że brakuje filtrowania sygnału z przycisku lub funkcji Debounce.

Czy na schemacie płytki (UM1842 na str. 33 - schemat przycisku PA0) przy C36 [NA] nie oznacza not available - czyli nie ma filtrowania sygnału z przycisku i dlatego po naciśnięciu przycisku program przechodzi o kilka kroków na raz (zmienna state).

Podzieli się ktoś spostrzeżeniami?

Bardzo słuszna uwaga! U mnie jakimś cudem nie było tego problemu i zupełnie nie zwróciłem na to uwagi ale tak, jeśli przyjrzysz się płytce Discovery to faktycznie w miejscu kondensatora C36 (zaraz nad przyciskiem) jest puste miejsce.

Problemem z priorytetem przerwań od SysTicka już się zajmuję. Czy ktoś z mających ten problem mógłby mi przesłać swój projekt w wiadomości prywatnej?

Witam

Bardzo dziękuję za świetny kurs, lekko napisany o bardzo praktycznym przekazie bo chyba oto chodzi 🙂

Cieszę się że komuś służy 🙂

1. problem z kompilacją tak jak wcześniej już było napisane z funkcją.
 /* SysTick_IRQn interrupt configuration */
 HAL_NVIC_SetPriority(SysTick_IRQn, 0, 0);

rozwiązaniem jest odhaczenie w MXcube w opcjach generowania projektu opcji "Generate Under Root"

Chciałbym się dowiedzieć do czego jest ta opcja i co ona powoduje ?

W którym miejscu w Cube znalazłeś opcję "Generate Under Root" ? Nigdy tego nie widziałem i nie mogę się tego doszukać.

Pozdrawiam

Bartek

Link do komentarza
Share on other sites

Cieszę się że komuś służy

Służy i to bardzo !

Nie znalazłem bardziej przystępnego tutoriala HAL/Cube - można więc domniemywać , że obecnie jest to najlepszy kurs na świecie 🙂

Bartku - wspominałeś, że można uruchomić Cube na Linuksie - próbuję uruchomić Cube pod Eclipse z wymuszeniem SWT_GTK3=0..../eclipse i niestety Cube się wysypuje z komunikatem

JVM terminated. Exit code=1

/usr/bin/java

-Dosgi.requiredJavaVersion=1.6

-XX:MaxPermSize=256m

-Xms40m

-Xmx512m

-jar /home/len/eclipse//plugins/org.eclipse.equinox.launcher_1.3.0.v20130327-1440.jar

-os linux

-ws gtk

-arch x86_64

-showsplash /home/len/eclipse//plugins/org.eclipse.platform_4.3.2.v20140221-1700/splash.bmp

-launcher /home/len/eclipse/eclipse

-name Eclipse

--launcher.library /home/len/eclipse//plugins/org.eclipse.equinox.launcher.gtk.linux.x86_64_1.1.200.v20140116-2212/eclipse_1508.so

-startup /home/len/eclipse//plugins/org.eclipse.equinox.launcher_1.3.0.v20130327-1440.jar

--launcher.appendVmargs

-exitdata c6001b

-product org.eclipse.epp.package.cpp.product

-vm /usr/bin/java

-vmargs

-Dosgi.requiredJavaVersion=1.6

-XX:MaxPermSize=256m

-Xms40m

-Xmx512m

-jar /home/len/eclipse//plugins/org.eclipse.equinox.launcher_1.3.0.v20130327-1440.jar

=========================================

java version "1.7.0_101"

OpenJDK Runtime Environment (IcedTea 2.6.6) (7u101-2.6.6-0ubuntu0.14.04.1)

OpenJDK 64-Bit Server VM (build 24.95-b01, mixed mode)

=========================================

- czy masz jakieś wskazówki?

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

... można uruchomić Cube na Linuksie - próbuję uruchomić Cube pod Eclipse z wymuszeniem SWT_GTK3=0..../eclipse i niestety Cube się wysypuje z komunikatem

Update:

dla zainteresowanych Linuksem - CubeMX działa stabilnie (przynajmniej na razie) jako 'standalone' i można bezproblemowo zaimportować wygenerowany projekt pod SWSTM32.

Z niecierpliwością czekam na dalsze odcinki 🙂

Link do komentarza
Share on other sites

Czesc,
Przy generowaniu kodu przez cubeMX (osobny program) tworzy on zawsze projekt o nazwie "nazwaprojektu configuration". Mam caly czas problem ze spacja w nazwie projektu i za kazdym razem jak aktualizuje kod przez cuba, to musze ja usuwac dla nazwy pliku wyjsciowego. Zauwazylem ze w waszym tutorialu nie ma tego problemu i macie nazwe projektu " costam_output". Czy moglbym prosic o wytlumaczenie jak ten problem zostal u was pominiety?

Link do komentarza
Share on other sites

Czesc,

Przy generowaniu kodu przez cubeMX (osobny program) tworzy on zawsze projekt o nazwie "nazwaprojektu configuration". Mam caly czas problem ze spacja w nazwie projektu i za kazdym razem jak aktualizuje kod przez cuba, to musze ja usuwac dla nazwy pliku wyjsciowego. Zauwazylem ze w waszym tutorialu nie ma tego problemu i macie nazwe projektu " costam_output". Czy moglbym prosic o wytlumaczenie jak ten problem zostal u was pominiety?

Mi też często dodaje słowo "configuration" do nazwy projektu, ale nigdy się tym nie przejmowałem. Czy u Ciebie występują z tego powodu jakieś problemy?

Link do komentarza
Share on other sites

Panowie mam problemik. Otóż zakupiłem płytke discovery z aliexpress o taką:

http://www.aliexpress.com/snapshot/7356232705.html?orderId=73067872524685

Problem tkwi w tym, ze gdy chce wybrać ją do projektu w Cube'ie, to tak na prawdę żadna nie odpowiada jej parametrom :/

Mamy coś takiego : STM32F407ZIT6 microcontroller featuring 2 MB of Flash memory, 256 KB of RAM in an LQFP144 package.

Poniżej foto z płytakmi , które pasują do parametrów po przefiltrowaniu.

Jak widzicie wszystkie są z innej 'rodziny' niż stm32f407. Co w tym przypadku zrobić? Którą wybrać?

Pozdrawiam

E: wybrałem jakiś mikro i próbowałem skompilować program postępując według instrukcji.

Wyrzuciło mi dwa błędy:

Ktoś wie jak się ich pozbyć? Z tego co wyczytałem jakiś problem z toolchainem, ale jak czemu skoro postępowałem wedle instrukcji?

E2: pomijając pierwszy problem, ktoś wie o co chodzi z tymi błędami? szukałem w necie i pusto. Nawet przeinstalowałem eclipse'a, ale problem pozostoje...

[ Dodano: 23-05-2016, 11:05 ]

Nikt nie ma pomysłu? 😋

Link do komentarza
Share on other sites

Magit, w komentarzach do kursu staramy się rozmawiać o sprzęcie zgodnym z tym, który polecamy. Inaczej powstaje zamieszanie. Jeśli próbujesz przerabiać ten kurs korzystając z innej platformy załóż proszę osobny temat 🙂

Link do komentarza
Share on other sites

Czesc, dziekuje za dobry kurs.

Mam jednak pytanie odnosnie obslugi przerwan od zdarzen zewnetrznych przy uzyciu biblioteki HAL. Jest tu pewna niejasnosc:

/* USER CODE BEGIN PFP */
/* Private function prototypes -----------------------------------------------*/
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin){
if(GPIO_Pin == Button_Pin){
	HAL_GPIO_WritePin(LED_Blue_GPIO_Port, LED_Blue_Pin, HAL_GPIO_ReadPin(Button_GPIO_Port, Button_Pin));
}
}
/* USER CODE END PFP */}

Autor podaje w jaki sposob sprawdzic ktory numer pinu spowodowal przerwanie, ale dalej nie wiadomo ktory port (A, B, C itd.). Ponadto nie wiadomo czy przerwanie bylo od falling czy rising edge, ale powiedzy moze to mozna sprawdzic odczytujac aktualny stan wyjscia. Ale zeby to zrobic, trzeba wiedziec od ktorego portu nastopilo przerwanie. Czy moglbym prosic o pomoc w tej kwestii?

Link do komentarza
Share on other sites

Bardzo słuszne pytania! Śpieszę z odpowiedzią.

Autor podaje w jaki sposob sprawdzic ktory numer pinu spowodowal przerwanie, ale dalej nie wiadomo ktory port (A, B, C itd.).

Przerwań zewnętrznych może być maksymalnie 16. Każde przerwanie ma unikalny numer (0,1,...,15), ściśle powiązany z numerem pinu, z którego pochodzi. Tylko jedno przerwanie o danym numerze może być zdefiniowane w systemie.

Oznacza to, że jeżeli zdefiniujemy przerwanie GPIO_EXTI_0 od pinu PA0, żaden inny pin 0 nie może być przerwaniem (PB0, PC0 itp.)

Z powyższych rozważań widać, że jeżeli otrzymamy przerwanie o numerze x, może ono pochodzić tylko i wyłącznie od konkretnego pinu na konkretnym porcie, na którym zostało zdefiniowane - tę informację mamy, ponieważ musieliśmy to wcześniej skonfigurować.

Ponadto nie wiadomo czy przerwanie bylo od falling czy rising edge, ale powiedzy moze to mozna sprawdzic odczytujac aktualny stan wyjscia.

Niestety nie ma osobnych przerwań od zbocza narastającego i opadającego. Jedyny sposób na sprawdzenie zbocza jest właśnie taki jak napisałeś - natychmiast po wywołaniu przerwania sprawdzić stan pinu, od którego zostało wywołane przerwanie. Na pytanie jaki port należy sprawdzić odpowiedziałem w wyższej części wiadomości.

Link do komentarza
Share on other sites

Hej!

Mam problem z labelami CubeMX'a. Jeżeli wygeneruję jakieś, to Cube co prawda robi plik "mxconstants.h" i wszystko tam jest, ale nie dodaje się w main.h automatycznie include do owego pliku, a jak sam zainkluduję, to kompilator i tak nie widzi tych define'ów. Dodam, że odświeżam pliki, itd., itp., zgodnie z podpowiedziami z forum.

Podobnie jest z ADC - po wygenerowaniu przez CubeMX'a kompilator nie widzi żadnych symboli, np. ADC_EOC_SINGLE_CONV, ADC_RESOLUTION_12B, etc. Robiłem wszystko dokładnie tak, jak w kursie napisano!

Bardzo proszę o pomoc.

Notatka z 2016-06-07: a teraz nagle wszystko działa. Przyszedłem po pracy do domu, włączyłem projekt i ani jednego błędu (sic!).

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.