Skocz do zawartości

TIMER, Systick maszyna stanowa [STM32f0]


wozio91

Pomocna odpowiedź

Cześć

Mógłbym prosić o przykładową realizację maszyny stanowej tj. mamy 3 stany: A , B , C. Chciałbym zrealizować to tak aby z A do B przechodzić za pomocą dwóch przyciśnięć, a z A do C po przytrzymaniu przycisku przez 20 sekund.Prosiłbym o jakiś przykład kodu, jeśli można. Sam musiałbym przeanalizować kod.

Pracuję na STM32f0Discovery

Link do komentarza
Share on other sites

-najpierw "A"

-jeżeli przycisk wciśnięty inkrementuj zmienną jeżeli zmienna = 2 to skocz do "B"

-jeżeli przycisk 1 wciśnięty to czekasz 20sek. jeżeli nadal wciśnięty to idziesz do "C"

Może nie najlepszy sposób ale ja bym tak zrobił.

Link do komentarza
Share on other sites

Szczerze powiedziawszy Mechano to nie będzie zbyt optymalny sposób. Mogę powiedzieć, jak ja bym to zrobił, tylko trzeba doprecyzować, czy mamy do dyspozycji jeden przycisk?

A powiedz wozio91, czego Ty dokładnie oczekujesz? Dokładnego kodu, czy pomysłu na realizację maszyny stanu? Wiesz o tym, ze ST dostarcza wiele przykładów użycia ich biblioteki, gdzie wszystko jest ładnie pokomentowane?

Link do komentarza
Share on other sites

Mechano, żeby wejść z A do B musiałbyś w sumie czekać 40s.

Skoro masz SysTicka, wykorzystaj go 🙂

Przerwanie od SysTicka:

Inkrementuj zmienną1 //przyda się do określenia, czy jeszcze czekamy na drugi klik, czy nie

Jeżeli zmienna1 > wartość czekania dla kliknięcia drugiego, flaga klik = 0

Jeżeli przycisk wciśnięty, inkrementuj zmienną2. //Czyli już mamy prosty sposób na określenie długości trwania wciśnięcia przycisku - jest to wartość zmiennej

Jeżeli przycisk puszczony, sprawdź wartość zmiennej i porównaj do 20s (tu musisz dobrać tą wartość).

Jeśli jest większe - skok do C

Jeżeli jest mniejsze od wartości czasu dla podwójnego kliknięcia, ustaw flagę klik

Jeżeli flaga klik jest ustawiona i przycisk wciśnięty (ale już raz był puszczony, kolejną flagę trzeba), skok do B

Oczywiście skoki powinny odbywać się w pętli głównej za pomocą flag volatile ustawianych w przerwaniu.

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

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

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.