Skocz do zawartości

Wysłanie liczby przez UART


Pomocna odpowiedź

Napisano (edytowany)

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

@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 🚀 

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ś?

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.

 

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

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.

Powiem tyle: gdybyś rok temu rozumiał jak ta funkcja działa to dzisiaj nie musiałbyś sobie nic przypominać.

Niestety - w informatyce wkuwanie na pamięć to niezbyt dobry pomysł...

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