Die HAL_UART_Receive_IT muss bei jeder ISR neu gestartet werden um das nächste Byte zu empfangen. Beim debugen funktionierts irgendwie nicht mehr (?). Also bei mir wird die ISR dann nicht mehr aufgerufen (wieso? Interrupt request wird ja beim breakpoint nicht zurückgesetzt) Wie nutze ich den UART, damit er mit jedem empfangenen byte die ISR ausführt (bevorzugt ohne jedesmal in der ISR neu zu starten)?
Schau mal hier: Beitrag "[STM32/HAL] simples U(S)ART-Library" Und ja - du musst am Ende deiner Interrupt-Behandlung HAL_UART_ReceiveIT erneut aufrufen.
:
Bearbeitet durch User
Harry L. schrieb: > Schau mal hier: > Beitrag "[STM32/HAL] simples U(S)ART-Library" Wozu benötige ich eine alternative library? (Sehe Vorteil nicht). Ich benötige nur byteweise receive, aber es soll halt IMMER bei Bytempfang die ISR aufgerufen werden (auch beim debug).
:
Bearbeitet durch User
Max schrieb: > benötige nur byteweise receive Genau das macht der Code, und du kannst dir anschauen, wie man sowas richtig macht. Als nette Beigabe gibts noch ein paar Ringbuffer zum Senden und Empfangen.
:
Bearbeitet durch User
Max schrieb: > Beim debugen funktionierts irgendwie nicht > mehr (?). Also bei mir wird die ISR dann nicht mehr aufgerufen (wieso? > Interrupt request wird ja beim breakpoint nicht zurückgesetzt) Liest Du das UART Peripherial im Debugger aus? Das Lesen des Receive Registers hat Seiteneffekte, auch wenn man das via Debugger verwendet. Falls Daten verloren gehen (Overflow) wird gerne mal ein Fehler Flag gesetzt, dessen Behandlung man sich im Qelltext anschauen sollte.
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.