Skocz do zawartości

[STM32] wykonywanie kilku rzeczy nie zależnie.


Pomocna odpowiedź

Napisano

Zamierzam zabrać się za STM32. Przeglądam trochę materiałów i ciekawi mnie jak w tych mikrokontrolerach realizuje się wielozadaniowość? W AVR  Arduino wykorzystywało się millis(). A jak to jest w STM32? ( STM32CubeIDE). Bo dellay() jest mało funkcjonalne.

@vtor jeśli chcesz to robić porządnie to zainteresuj się RTOS'ami - to najlepsza opcja. Jak chcesz budować coś samodzielnie to możesz korzystać z timerów i przerwań. Poszukaj też czym jest SysTick - może być tutaj pomocny 🙂

  • Lubię! 1
  • Pomogłeś! 1

można odczytać wartość licznika w pętli głównej używając __HAL_TIM_GET_COUNTER np:

int czas = __HAL_TIM_GET_COUNTER(&htim10);

Możesz to zrobić postępują zgodnie z kursem dla F4 z tą różnicą , że po wykonaniu Kroku. 5 od razu generujesz projekt w CubeMX (nie konfigurujesz przerwań). W wygenerowanym projekcie przechodzisz do funkcji konfigurującej przerwanie TIM_Init i jako ostatnie polecenie dopisujesz :

HAL_TIM_Base_Start(&htim10);

Oczywiście konfigurację zegarów i timera możesz ustawić wedle własnych potrzeb. Nie jest to najbardziej optymalne rozwiązanie ale lepsze od HAL_Delay(). Nawiązując do Arduino a konkretnie płytek opartych o układy SAM/SAMD to wielozadaniowość jest możliwa z wykorzystanie delay() przykład.

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