Liebes Forum,
ich programmiere den STM32F303 und verwende die Stadard Peripheral
Library von STMicroelectronics.
Momentan arbeite ich an der SPI-Kommunikation.
Es funktioniert soweit alles.
Unter anderem habe ich folgende Programm-Zeilen:
1 | SPI_SendData8(SPI1,0xff);
|
2 | while (SPI_I2S_GetFlagStatus(SPI1,SPI_I2S_FLAG_TXE)==RESET);
|
3 | while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_BSY) == 1);
|
Wie aus den Zeilen erkennbar, wird nachdem 0xFF gesendet wird, gewartet,
bis die nächsten Schritte ausgeführt werden sollen.
Jetzt stelle ich mir vor, was passiert, wenn mit der SPI-Schnittstelle
etwas nicht funktioniert und zum Beispiel das SPI_I2S_FLAG_BSY nie Null
wird. Der Mikrocontroller würde in der while-Schleife hängen bleiben.
In einem solchen Fall möchte ich, dass die SPI Kommunikation abgebrochen
wird und ein Fehlercode in der Funktion zurück gegeben wird.
Wie löst ihr diesen Fall? Bzw. wie kann ich überprüfen, ob der uC in der
while-Schleife schon "längere Zeit" hängt?
Danke für eure Tipps und Hinweise!