Skocz do zawartości

Kurs STM32 F4 - #6 - Liczniki, konfiguracja zegara, debugger


Pomocna odpowiedź

Napisano
html_mig_img
Praca mikrokontrolera często musi być zależna od czasu. Należy w tym celu wygenerować sygnał, który będzie podstawą taktowania systemu.W tym odcinku opiszę podstawową konfigurację liczników. Przejdziemy również przez ustawiania zegarów. Na koniec użyjemy debuggera, dzięki czemu możliwe będzie m.in. wgrywanie programu z poziomu IDE.

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.

Cześć, dzięki za następna część kursu !

Świetna lektura!

Ale ... w miarę czytania rośnie apetyt...

Czy można prosić o rozwinięcie tego tematu o :

RTC (rozumiem,ze trzeba najpierw wlutować rezonator 32k)

PWM

dekodowanie enkoderów obrotowych

dekodowanie czujników Halla

Myślę,że pozostali czytelnicy tego kursu zgadzają się z moją pokorna prośbą ?

__________

Komentarz dodany przez: Treker

Post scaliłem z właściwym tematem.

beroduar, zarówno PWM, jak i enkodery pojawią się w dalszej części kursu.

Pozostałe tematy są na liście zagadnień do poruszenia podczas ewentualnej kontynuacji kursu 🙂

Kolejna świetna dawka wiedzy.

Nie mogę już się doczekać kursu o PWM i o sterowaniu Servami.

Odnośnie STM32 F4 myślicie, że dobrym pomysłem jest zrobienie na nim Humanoida czy może lepiej na AVR+ Serwokontroler ? 😉

Z góry dziękuję za opnie 😃

Witam dziękuje za kurs . Mam taki problem u mnie nie mogę wybrać

Debug As > Ac6 STM32 C/C++ Application.

ponieważ nie ma takiej opcji , można jakoś dodać ja ręcznie dziekuje

gufim, czy skonfigurowałeś środowisko i stworzyłeś projekt dokładnie tak, jak opisane było to w poprzednich częściach kursu?

Odnośnie STM32 F4 myślicie, że dobrym pomysłem jest zrobienie na nim Humanoida czy może lepiej na AVR+ Serwokontroler ? 😉

Humanoida nigdy nie budowałem, aczkolwiek stałem przed taką decyzją jak Ty przy budowie Micromouse'a. Wybrałem mikrokontrolery AVR i bardzo tego żałuję, ponieważ przyblokowało to mój rozwój z STMami oraz sprawiło niemało problemów z samym robotem, których uniknąłbym dzięki zastosowaniu STM32.

Co do Humanoida, jeśli chcesz mogę spróbować poprosić mojego dobrego kolegę z koła, autora konstrukcji, która widnieje na okładce fotorelacji z zawodów Roboxy 2016, o dogłębniejszą odpowiedź na Twoje pytanie 🙂

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

Witam dziękuje za kurs . Mam taki problem u mnie nie mogę wybrać

Debug As > Ac6 STM32 C/C++ Application.

ponieważ nie ma takiej opcji , można jakoś dodać ja ręcznie dziekuje

Czy mógłbyś sprecyzować której konkretnie opcji nie ma? Najwygodniej byłoby gdybyś wstawił zrzut ekranu przedstawiający miejsce, w którym brakuje niezbędnych opcji.

Wygląda to tak, jakbyś nie zainstalował dodatków do SW4STM32. Może spróbuj usunąć całkowicie pliki Eclipse i wykonać wszystko od nowa? Możesz również spróbować zainstalować środowisko wykorzystując gotowy instalator, dostępny na openstm32 (musisz być zalogowany, aby mieć dostęp do sekcji pobierania).

Zrobiłem format dysku zainstalowałem od nowa Win10 i resztę tak samo wszystko jak w poradniku i nadal to samo , spróbuje jeszcze z tym openstm32

Cześć,
po pierwsze dzięki za szczegółowy, zrozumiale napisany kurs:)

Mam problem z wgraniem programu bezpośrednio z Eclipsa i dostaniem się do debuggera. U mnie błąd wygląda tak:

Zgodnie z zaleceniami terminuję i zamykam procesy, a błąd pojawia się przy każdej próbie wgrania programu. Wgrywanie przez ST-LINK Utility działa bez problemu.

Macie jakieś pomysły?

Run -> Debug Configurations -> Ac6 STM Debugging -> .elf -> Zakładka: Debugger -> Script: Manual spec -> Debug device: ST-LinkV2-1 -> Debug interface: SWD -> Apply -> Debug

  • Lubię! 1
  • 1 miesiąc później...

Osobiście miałem problem z uruchomieniem przerwania na TIM10, funkcja

void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)

Po prostu nie działała, zauważyłem dopiero po czasie że STM32CubeMX wygenerował mi w plikach src plik o nazwie: ,,stm32f4xx_it.c" W tym właśnie pliku znajdowała się wygenerowana funkcja o nazwie: ,,void TIM1_UP_TIM10_IRQHandler(void)" Która dopiero zaczęła działać poprawnie, może w którejś aktualizacji STM32CubeMX pojawiła się ta zmiana, ale mi nie działał sposób z artykułu. Może komuś pomogą moje poszukiwania.

  • 2 miesiące później...

Hej,

Specjalnie założyłem konto, żeby poinformować o kolejnym problemie na który natrafiłem. Mianowicie po odpaleniu debugera program nie mógł przeskoczyć żadnej z funkcji inicjalizujących peryferium. Objawiało się to tym, że PC stał na tej funkcji i pomimo operacji run/stop on dalej tam siedział. Nie pomagało przeskoczenie funkcji poprze "run over"- wtedy w konsoli pojawiał się błąd w postaci: "Info : halted: PC: 0x08000f4c" (adres oczywiście może być różny). Na początku myślałem, że to coś związanego z SysTickiem i przerwaniami, potem kombinowałem z WDT- oczywiście cały czas szukałem w internecie informacji których nie było na żadnym forum... I w sumie dalej rozwiązania nie ma. Znalazłem tylko ten temat:

http://www.openstm32.org/forumthread943#tiki-top

w którym autor mówi o tym, że funkcje inicjalizujące są zadeklarowane jako inline i coś się z tym pierdzieli. Rozwiązaniem jest wyłączenie optymalizacji:

PPM na projekt -> Properties -> C/C++ build -> Settings -> MCU/GCC Compiler -> Optimization -> Optimization Level None

W moim przypadku pomogło, ale oczywiście jest to obejście problemu, a nie jego wyeliminowanie

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