Forum: Mikrocontroller und Digitale Elektronik STM32 HAL UART_IT Debug


von Max (stm3222)


Lesenswert?

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)?

von Harry L. (mysth)


Lesenswert?

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
von Max (stm3222)


Lesenswert?

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
von Harry L. (mysth)


Lesenswert?

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
von Jim M. (turboj)


Lesenswert?

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
Noch kein Account? Hier anmelden.