Funkcja blokująca prace programu

0

Witam, piszę program w C++ na mikrokontroler. Mam taką funkcję:

static void Uart0Gets(char *str) //Odbior znaku z terminalu przez rs232
{
	char c;
	do
	{

		while(!(U0LSR & U0LSR_RDR)); //Czekaj na znak
		c = U0RBR; //Odbierz znak
		*str++ = c; //Zapisz znak do bufora

	}
	while(c != '\r');
	*(str-1) = 0;
}

Wywołuje ją :

 Uart0Gets(buf);

I tu jest problem jak ją wywołam czeka na ten znak i nie robi nic innego, przez co cały program stoi.
Potrzebuje żeby odbierał znaki, ale nie blokował programu. Pomóżcie..

0

Czy twój kontroler ma sprzętowe przerwanie do obsługi portu?
Jeśli tak, to musisz napisać procedurę obsługi tego przerwania i czytać z portu tylko jak kontroler zgłosi że coś czeka w buforze.

1 użytkowników online, w tym zalogowanych: 0, gości: 1