Dzień dobry,
mam pytanko o funkcję printf, korzystając z tego poradnika:
http://forbot.pl/blog/artykuly/programowanie/kurs-stm32-5-komunikacja-z-komputerem-uart-id8439
zrobiłem tak jak w poradniku, jednak ciekawi mnie jak to dokładnie działa, znalazłem takie linijki w wygenerowanym kodzie:
extern int __io_putchar(int ch) __attribute__((weak));
int _write(int file, char *ptr, int len)
{
int DataIdx;
for (DataIdx = 0; DataIdx < len; DataIdx++)
{
__io_putchar(*ptr++);
}
return len;
}
i teraz pytanie, skąd funkcja printf wie że ma użyć tej wersji _write a nie jakiejś innej domyślnej?
jeszcze jedno pytanko, przy odczytywaniu danych z USART lecą one dosyć wolno, a chciałbym poczekać aż dana transmisja się zakończy, i mam taki pomysł na to:
odczytuje znak
czekam określony czas pomiędzy ramki który wynika z prędkości transmisji
sprawdzam czy jest nowy znak - jak jest wykonuje pętle ponownie jak nie kończę
Macie może jakieś lepsze sposoby na takie coś? : )
Z góry dziękuję za pomoc : )