Skocz do zawartości
romkli

Wysłanie liczby przez UART

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

Udostępnij ten post


Link to post
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 🚀 

Udostępnij ten post


Link to post
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ś?

Udostępnij ten post


Link to post
Share on other sites

No to powiedz czym się różnią:

{
  char *s;
  ...
    
{
  char s[10];
  ...

Pamiętaj, że w Twoim przypadku "s" to bufor, w którym znajdzie się zapis liczby...

Udostępnij ten post


Link to post
Share on other sites

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.

 

Udostępnij ten post


Link to post
Share on other sites

@romkli Nie najlepiej Ci się przypomniało - może lepiej poczytaj o podstawach programowania C zanim przejdziesz dalej...

Udostępnij ten post


Link to post
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..

Udostępnij ten post


Link to post
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.

Udostępnij ten post


Link to post
Share on other sites

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

Udostępnij ten post


Link to post
Share on other sites

Ja tu z innej bajki, ale w mojej było tak, że zmienna lokalna w funkcji musi mieć jakąś wartość przy tworzeniu.   

Udostępnij ten post


Link to post
Share on other sites

A w mojej było że nie musi. Było za to, że trzeba do niej coś podstawić przed pierwszym użyciem.

Udostępnij ten post


Link to post
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...