Witam ponownie.
Wygląda na to, że to nie jest problem z przerwaniami od DMA. Myślałem, ze może używasz tam jakichś funkcji API RTOS-a. Teraz dopiero zauważyłem, że używasz:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
, a to dość "pamięciożerna" funkcja, więc z dużym prawdopodobieństwem Twojemu taskowi:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
brakuje stosu. Masz:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
, daj dla niego stos na próbę co najmniej 1024, zresztą w F429 masz RAMU od groma, możesz na początek dać większe stosy dla wszystkich tasków ( ważne: wyrównane do 8 !!!). W pliku freertosconfig.h masz
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
, możesz zwiększyć wielkość sterty ( wyrównaj do 8 na wszelki wypadek !!! ). Zainteresuj się funkcją
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
, możesz na próbę stworzyć task-a, w którym będziesz testował stos dla wszystkich zadań i go wyświetlał, albo choć pomrugaj LED-em w poszczególnych taskach, by widzieć, czy każdy się wykonuje poprawnie. Choć tak naprawdę, gorąco polecam tego "watermarka" - przy bardziej złożonych projektach nie wyobrażam sobie ustawiania stosów dla zadań "na czuja".
P.S. Kolesie do FreeRTOS-a kombinują z tymi makrami jak "koń pod góre", w pierwszej chwili w ogóle nie mogłem załapać co to jest np. osThreadDef(...)
.
P.S. 2
. Ostatnie zdanie z z Twojego drugiego posta upewnia mnie w przekonaniu, że to problemy ze stosem(ami).
Pozdrawiam, QuadMan.