Forum: Mikrocontroller und Digitale Elektronik Unterschied USART_GetFlagStatus() zu USART_GetITStatus()


von Martin (Gast)


Lesenswert?

Hallo,

ich programmiere einen STM32 mit der Std Lib von ST. Ich bin bei der 
USART Programmierung jetzt auf die Funktionen USART_GetFlagStatus() und 
USART_GetITStatus()gestossen. Mir ist aber nicht klar, was der genaue 
Unterschied ist. Üblicherweise frage ich in der USART ISR mit der 
USART_GetITStatus()ab welchees Flag aktiv ist. Durch das Auslesen mit 
USART_ReceiveData() wird das pending Bit zurückgesetzt. Soweit O.k.

Was ist aber wenn ein anderes Flag die ISR auslöst (z.B. Overrun)? Man 
soll mit der Softwaresequenz 1. USART_GetFlagStatus() 2. 
USART_ReceiveData() die Flags zurücksetzen können, um ein Dauerfeuer der 
ISR zu verhindern. Was ist aber wenn ich nur mit USART_GetITStatus() 
abfrage und dann mit USART_ReceiveData() mein Byte auslese. Kann es dann 
ev. passieren, das ich nicht alle Flags die auftreten können zurücksetze 
und ich in der ISR verrecke? Muss ich zus. noch mit 
USART_GetFlagStatus()die Flags in der ISR abfragen?

Martin

von Martin (Gast)


Lesenswert?

Irgend ein STM32 Std. Lib. Guru hier?

von chris (Gast)


Lesenswert?

Martin schrieb:
> uss ich zus. noch mit
> USART_GetFlagStatus()die Flags in der ISR abfragen?

zumindest die, deren Interrupts du auch freigeschaltet hast.

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.