Skocz do zawartości

Kurs STM32 F4 - #5 - Pomiar napięcia (ADC), DMA, STMStudio


Pomocna odpowiedź

html_mig_img
Tym razem omówimy konfigurację przetwornika ADC, odkryjemy podstawy współpracy z DMA oraz nauczymy się korzystać z STMStudio! Mierząc napięcie możemy np. monitorować stan zasilania urządzenia, czy odczytywać informacje z czujników analogowych. Rozwiązanie okazuje się szczególnie użyteczne, jeśli dodatkowo do pracy zaprzęgniemy moduł DMA.

UWAGA, to tylko wstęp! Dalsza część artykułu dostępna jest na blogu.

Przeczytaj całość »

Poniżej znajdują się komentarze powiązane z tym wpisem.

Link do komentarza
Share on other sites

Cześć!

Dzięki za kurs, opisujesz wszystko bardzo przystępnie.

Zauważyłem jeden babol.

W sekcji obsługi poprzez przerwanie, w funkcji

HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc)

przekazujesz wskaźnik, a następnie korzystasz z operatora wyłuskania adresu, co jest niepoprawne.

Zamiast:

PomiarADC = HAL_ADC_GetValue(&hadc1);

powinno być:

PomiarADC = HAL_ADC_GetValue(hadc1);

Pozdrawiam i dziękuję za kurs 😉

Link do komentarza
Share on other sites

Nie jest do końca źle. Po prostu autor użył zamiast wskaźnika otrzymanego jako argument HAL_ADC_ConvCpltCallback o nazwie "hadc", od razu struktury o nazwie "hadc1". Poprawnie kod powinien wyglądać tak:

    PomiarADC = HAL_ADC_GetValue(hadc);
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

To i ja dołożę swoje przysłowiowe 5 gr.

HAL_ADC_Start_DMA(&hadc1, (uint32_t*)Joystick, 2);

Tak powinien wyglądać poprawnie kod dla DMA w przykładzie z joystickiem.

Błędy ujawniły się dopiero podczas korzystania z Keila.

Układ z któego korzystam: STM32F4 Discovery

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

To i ja dołożę swoje przysłowiowe 5 gr.
HAL_ADC_Start_DMA(&hadc1, (uint32_t*)Joystick, 2);

Tak powinien wyglądać poprawnie kod dla DMA w przykładzie z joystickiem.

Błędy ujawniły się dopiero podczas korzystania z Keila.

Układ z któego korzystam: STM32F4 Discovery

Hmm, nigdy nie trafiłem na takie problemy w Keilu, chociaż korzystałem z niego dość krótko (kilka miesięcy). Niemniej jednak fakt - funkcja przyjmuje jako argument typ uint32_t*, więc chcąć być zupełnie poprawnym, należałoby to jawnie zrzutować, tak jak to zaproponowałeś. Nigdy nie spotkałem się z tym problemem w Eclipse.

A jak zrobić pomiar z kilku kanałów ADC1 w trybie blokującym?

Dziękuje za kurs, brakowało czegoś takiego

Postaram się odpowiedzieć na Twoje pytanie jak tylko czas mi na to pozwoli!

Link do komentarza
Share on other sites

Nie wiem czemu, ale mam problem z STM Studio.

Nie mogę wybrać zadeklarowanych zmiennych z pliku z rozszerzeniem .elf ponieważ STM Studio ich nie widzi. Gdy wskazuje mu plik z projektu ze stronki to działa tak jak powinno.

Winny w tym wypadku jest kompilator, że nie tworzy mi tych zmiennych ?

Link do komentarza
Share on other sites

komarekzm, osobiście nie miałem takiego problemu, więc tylko mogę doradzić, abyś sprawdził, czy na 100% wybierasz odpowiedni plik. Może sięgasz np. do złego katalogu (np. starej wersji projektu, gdy nie było tych zmiennych)? Takie błędy są najprostsze, a można zmarnować na nich najwięcej czasu 😉

Link do komentarza
Share on other sites

Strasznie to jest frustrujące . Rozgryzasz zawiłe wzory, rozpisujesz sobie wszystko, czujesz że z każdym wzorem przybywa skill, a tu coś takiego :/ .

Udało mi się wkąńcu i teraz działa 😃 , ale nie wiem dlaczego wcześniej nie chciało zadziałać , mianowicie skompilowałem projekt za pomocą "Build all", przedtem kompilowałem za pomocą "Build project" (klikając prawy przyciskiem na główny folder projektu).

Link do komentarza
Share on other sites

komarekzm, grunt, że się udało! Dzięki, że podzieliłeś się rozwiązaniem tego problemu - zapewne pomoże w przyszłości innym 🙂

Link do komentarza
Share on other sites

Moją wcześniejszą wiadomość można wrzucić do kosza. Później drugi raz napotkałem się na ten problem i bindowanie za pomoc build all nie pomogło. Zdecydowanie pomogło zapisanie maina, chociażby za pomoc CTRL + s i później skompilowanie.

  • 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.