Skocz do zawartości

Pomocna odpowiedź

Napisano

Cześć, mam problem z przykładem w rozdziale 6 - oszczędzanie energii. Wykonałem dwukrotnie instrukcje krok po kroku, a końcowy efekt jest taki, że dioda mruga raz przy wgraniu programu (lub wciśnięciu przycisku reset na płytce), a potem zero tj. dioda nie mruga. Zasilam płytkę kablem USB. Co mogę sprawdzić ?

@stanbb witam na forum 🙂 Zanim zaczniemy analizować temat dalej to powiedz proszę:

  • Jaka wersja CubeIDE?
  • Czy wcześniej wszystko przebiegało dokładnie tak jak w kursie?

Wyeliminujmy najpierw niespodzianki wynikające ze zmian wprowadzonych w Cube 😉

18 godzin temu, Treker napisał:

wersja : STM32CubeIDE
Version: 1.11.0
Build: 13638_20221122_1308 (UTC)

Poprzednie rozdziały przeszedłem bez problemu zgodnie z opisem. 

@stanbb raczej wszystko powinno w takim razie działać. Wyeksportuj swój cały projekt i dodaj tutaj jako załącznik (spakowane archiwum) - dziś do ~18 będę miał dostęp do płytki to sprawdzę u siebie 🙂

  • 2 tygodnie później...

@stanbb przepraszam za brak odpowiedzi, ale akurat nie miałem dostępu do sprzętu. Jeśli temat jest aktualny, to jutro się tym zajmę 🙂

@stanbb dziękuję za cierpliwość. Poświęciłem na to sporo czasu, a ostatecznie okazało się, że kolejny raz pojawił się ten sam błąd w generatorze kodu, który był już wcześniej. Dokładny opis problemu i jego rozwiązania znajdziesz tutaj: https://forbot.pl/forum/topic/20044-kurs-stm32l4---6---oszczedzanie-energii-5-lat-na-baterii/page/2/#comment-167699

Błąd ten był już zgłaszany do producenta, został naprawiony, ale znów się pojawił. Tutaj jest oficjalne zgłoszenie: https://community.st.com/s/question/0D53W00001U3x5oSAB/does-not-generate-halrtcexsetwakeuptimerit?t=1673531776852

Za chwilę zgłoszę to jeszcze raz innymi kanałami.

W każdym razie, aby naprawić błąd należy dodać do konfiguracji RTC poniższy wpis:

  if (HAL_RTCEx_SetWakeUpTimer_IT(&hrtc, 2047, RTC_WAKEUPCLOCK_RTCCLK_DIV16) != HAL_OK)
  {
    Error_Handler();
  }

Najlepiej między tymi komentarzami:

  /* USER CODE BEGIN RTC_Init 2 */

  /* USER CODE END RTC_Init 2 */

Wtedy wszystko powinno działać.

  • Pomogłeś! 1

@stanbb ten kod uruchamia przerwanie po przepełnieniu licznika, inaczej mówiąc jest to kod, który powinien zostać wygenerowany po wybraniu poniższych funkcji i aktywacji przerwania - wpisana jest tylko mniejsza wartość (2047), aby było szybciej widać efekty podczas testów. W wyniku błędu w generatorze Cube takie linie nie są poprawnie generowane (pomimo wyklikania opcji w konfiguratorze) i dlatego program nie działał. Gdy błąd zostanie usunięty przez producenta to nie będzie potrzeby, aby samodzielnie dopisywać te linie kodu.

1.png

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...