Skocz do zawartości

Wysłanie liczby przez UART


romkli

Pomocna odpowiedź

Witam serdecznie. Jestem początkującym w STM. Właśnie przechodzę z AVR. Chcę wysłać przez UART liczbę a dokładnie przekonwertować ją na stringa poleceniem itoa. Rok temu już to zrobiłem, ale w między czasie padł mi dysk i wszystko straciłem.

 

Zrobiłem funkcję:

void send_integer(uint8_t n){
    char *s;
    itoa ( n, s, 10 );
    send_string(s);
}

 

ale podczas kompilacji wywala mi błąd

..\Src\main.c:308:12: warning: 's' is used uninitialized in this function [-Wuninitialized]
  itoa ( n, *s, 10 );

 

Edytowano przez romkli
Link do komentarza
Share on other sites

@romkli, kody programów należy umieszczać przez narzędzie KOD (znajdziesz je w edytorze pod ikonką "<>"). Dzięki niemu programy są odpowiednio formatowane i kolorowane, a wtedy wszystkim znacznie łatwiej analizować wklejony kod. Proszę to poprawić - z góry dziękuję za zrozumienie i pomoc przy utrzymaniu porządku na forum 🚀 

Link do komentarza
Share on other sites

Co jest niezrozumiałego w komunikacie błędu?

Funkcja itoa umieszcza w buforze zapis liczby i wypadałoby sobie taki bufor utworzyć. Ponieważ go nie utworzyłeś, kompilator ostrzega Cię, że zmienna w której powinien znajdować się wskaźnik do bufora pokazuje w rzeczywistości gdzieś w okolice Kamczatki...

Pisać dalej czy już wiesz co źle zrobiłeś?

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

W pierwszym przypadku mam nieokreśloną liczbę w zmienne s, zaś drugim przypadku mamy określoną liczbę.

Przypomniało mi się. Poprawiłem funkcje na:

void send_integer(uint8_t n){
	char s[4];
	itoa ( n, s, 10 );
		send_string( s );
}

Teraz wszystko działa ja miało działać.

Dzięki za podsunięcie dobrego kierunku.

 

Link do komentarza
Share on other sites

Pewnie to dlatego, że Piątek wieczór po ciężkim tygodniu, ale jestem przerażony. Stopień ignorancji rośnie w zastraszającym tempie. I na dodatek "Teraz wszystko działa ja miało działać" więc jeśli rzeczywiście ty miało działać, to ludzkość wkrótce zginie. A nawet jeśli nie, to Ziemia jest z pewnością płaska i ma nie więcej jak 5000 lat..

Link do komentarza
Share on other sites

Drogi Elvisie.

Przypomnę, bo tego nie wiesz. Miałem już napisaną poprawnie działającą funkcję wysyłania liczny przez UART, było to gdzieś rok temu. Nie zrobiłem jej kopii a latem padł mi dysk i wszystkie moje dane straciłem. Jak napisałem, że przypomniało mi się to znaczyło, że naprowadziłeś mnie na poprawną drogę i napisałem ją na nowo. Wszystko działa.

5 minut temu, marek1707 napisał:

Pewnie to dlatego, że Piątek wieczór po ciężkim tygodniu, ale jestem przerażony. Stopień ignorancji rośnie w zastraszającym tempie. I na dodatek "Teraz wszystko działa ja miało działać" więc jeśli rzeczywiście ty miało działać, to ludzkość wkrótce zginie. A nawet jeśli nie, to Ziemia jest z pewnością płaska i ma nie więcej jak 5000 lat..

Fajna teoria. Dzięki, jesteś zajefajny. Pójdź do kabaretu.

Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

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