Hallo, ich habe folgendes Problem, ich möchte bei einer bestimmten Bedingung das Senden des UART stoppen. Wie kann ich das elegant lösen. Ich dachte daran das TXE Flag auf 0 zu setzen. Ich weiss jedoch nicht, ob das funktioniert und wie ich ein Flag setzen oder löschen kann. Hat da jemand einen Tip für mich? Gruß paule
Meinst Du, mitten in einem Byte aufhören zu senden? Da sehe ich als einzige Möglichkeit, der UART den GPIO wegzunehmen. Die SM wird wohl, einmal angeworfen, bis zum Schluss durchlaufen, ich denke nicht, dass man die stoppen kann. .... Warum willst Du das eigentlich?
Simon Huwyler schrieb: > Meinst Du, mitten in einem Byte aufhören zu senden? > Da sehe ich als einzige Möglichkeit, der UART den GPIO wegzunehmen. Takt abschalten tuts garantiert auch, ebenso der selektive Peripherie-Reset auf diese UART.
Die Frage ist so unvollständig, dass man Dir da wohl kaum helfen kann. Warum willst Du stoppen und vor allem, wer soll den Stop verursachen? Soll es die Software auf dem STM oder eine Bedingung von Außerhalb? Soll unter allen Umständen sofort gestopt werden, oder nach der Übertragung des aktuellen Bytes oder der laufenden Sequenz? Dann müsste man noch wissen, wie der treober aussieht, den Du für den USART verwendest. Aus der Luft gegriffene Lösungen... Byte zu ende, dann stop: - Abbruch-Bedingung in Interruptroutine - \0 in nächste Position des Puffers - Puffer-Position auf Puffer-Ende setzen Sequenz zuende: - Puffer gegen neue Daten blockieren Sofortiger Abbruch: - USART im RCC abschalten - USART disable setzen Abbruch von Außen: - RTS/CTS Handshake verwenden. Ist aber alles nur geraten, weil man Deine Randbedingungen nicht kennt.
A. K. schrieb: > Simon Huwyler schrieb: > >> Meinst Du, mitten in einem Byte aufhören zu senden? >> Da sehe ich als einzige Möglichkeit, der UART den GPIO wegzunehmen. > > Takt abschalten tuts garantiert auch, ebenso der selektive > Peripherie-Reset auf diese UART. Ich habe eindeutig zuwenig Phantasie! :-) Takt abstellen, würde aber sicher bedeuten, dass er, sobald der Takt wieder läuft, die Arbeit zu ende führt. Aber eben: Ulrich P. schrieb: > Die Frage ist so unvollständig, dass man Dir da wohl kaum helfen kann. Ist wohl so.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.