Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[Rozwiązano] Program żle działa, po wywołaniu funkcji sprintf w Keilu

Marek_Gorecki 10 Kwi 2018 12:07 264 4
  • #1 10 Kwi 2018 12:07
    Marek_Gorecki
    Poziom 16  

    Witam,

    mam taki dziwny i niezrozumiały dla mnie problem.
    Napisałem program w Keilu na STM32F0 , który wysyła dane na UARTA.
    Wszystko działa, w terminalu pięknie widzę transmisję.
    Do wysyłki używam DMA.
    Pewnego dnia dołozyłem funkcję, w której użyłem sprintfa i zaczeły się pojawiać krzaczki w terminalu.
    Stopniowo usuwałem poszczególne komendy, aż dotarłem do ciekawego zjawiska.

    Otóż jeśli ta funkcja będzie wyglądać tak:

    Kod: c
    Zaloguj się, aby zobaczyć kod


    to na terminalu mam krzaczki.
    Nie wiem czemu, bo ta funkcja nic nie robi.
    Ale ewidentnie, gdy ją odkomentuje, to wszystko wraca do normy.
    Ciekawostką jest to, że wystarczy, abym zadeklarował zmienną temp jako "static" i wszystko pięknie zaczyna działać.
    Co może być przyczyną tego zjawiska?

    0 4
  • Pomocny post
    #2 10 Kwi 2018 12:14
    JacekCz
    Poziom 36  

    Ten fragment jakim nas zaszczyciłeś, to jakiś programistyczny [----]
    Z dobrym programowaniem to on NIE MOŻE mieć nic wspólnego, jakieś C-voo-doo

    Marek_Gorecki napisał:

    Ciekawostką jest to, że wystarczy, abym zadeklarował zmienną temp jako "static" i wszystko pięknie zaczyna działać.
    Co może być przyczyną tego zjawiska?


    Szklana kula mówi, że stos

    0
  • Pomocny post
    #3 10 Kwi 2018 12:14
    Freddie Chopin
    Specjalista - Mikrokontrolery
  • #4 10 Kwi 2018 12:34
    Marek_Gorecki
    Poziom 16  

    Dzieki Panowie.
    Wiem że ten program nie ma sensu, ale powstał on po wycięciu wszystkiego i pozostawieniu tylko tego co powoduje to zjawisko.

    0
  • #5 10 Kwi 2018 12:35
    Marek_Gorecki
    Poziom 16  

    Dzieki Panowie.
    Wiem że ten program nie ma sensu, ale powstał on po wycięciu wszystkiego i pozostawieniu tylko tego co powoduje to zjawisko.

    Dodano po 47 [sekundy]:

    Rzeczywiście to jest wina stosu.

    0