STM32F4 finde Register nicht, welche im F3 existieren

OP #5451781
Lesenswert?

Hi,

Ich versuche ein Protokoll für einen RS485 Bus von einem STM32F303K8T6 
auf einen STM32F405RGT6 zu portieren, jedoch finde ich einige Register 
für die UART Instanz nicht. Folgende Befehle möchte ich ausführen, um 
beim Initialisieren die Interrupts zu löschen:
1
  __HAL_UART_CLEAR_IT(usart_handler,UART_IT_IDLE);
2
  __HAL_UART_CLEAR_IT(usart_handler,UART_IT_TXE);
3
  __HAL_UART_CLEAR_IT(usart_handler,UART_IT_RXNE);

Wobei
1
#define __HAL_UART_CLEAR_IT(__HANDLE__, __IT_CLEAR__) ((__HANDLE__)->Instance->ICR = (uint32_t)(__IT_CLEAR__))

Nun hat aber die UART Instanz auf dem F4 kein ICR Register und auch 
sonst existieren viel weniger Register, wobei ich auf beiden Controllern 
den UART1 verwende, welcher ja um die meisten Funktionen bietet.

Jemand eine Idee, wie ich das auf dem F4 implementiere?

RefMan:

[F4]
http://www.st.com/content/ccc/resource/technical/document/reference_manual/3d/6d/5a/66/b4/99/40/d4/DM00031020.pdf/files/DM00031020.pdf/jcr:content/translations/en.DM00031020.pdf

[F3]
http://www.st.com/content/ccc/resource/technical/document/reference_manual/4a/19/6e/18/9d/92/43/32/DM00043574.pdf/files/DM00043574.pdf/jcr:content/translations/en.DM00043574.pdf
#5451825
Lesenswert?

Die Flags wie etwa USART_SR_IDLE sind nach dem Schema 
Peripherie_Register_Bit benannt. Damit gibt es USART_SR_IDLE eben auch 
nur im Status Register des UARTs (SR) und eben nicht im Control Register 
(CR).

Bert S. schrieb:
> Da nach Seite 1013 CR1 die Register enthält. Denkt ihr das ist
> äquivalent?

Genau hinschauen! Im Control Register sind die jeweiligen Interrupt 
Enable Flags. Die eigentlichen Interrupt-Flags sind beim F4 im Status 
Register.
#5451827
Lesenswert?

Nach einem ersten Blick in die Reference Manuals scheint es mir so, dass 
die USART deines F4 deutlich weniger kann als die des F3.

Da du im Fall des F3 ja bereits die HAL Library benutzt könnte es für 
dich vielleicht am einfachsten sein die entsprechende HAL für den F4 zu 
nutzen. Die sollte dann auch auf deinen Controller zugeschnitten sein. 
Ob die Funktionsnamen dann aber noch die gleichen sind? Das wird dir 
jemand anders beantworten müssen.


Nachtrag:
Vergleiche mal die Registermaps auf Seite 1021 beim F4 und Seite 950f 
beim F3.
OP #5451829
Lesenswert?

Christopher J. schrieb:
> Genau hinschauen! Im Control Register sind die jeweiligen Interrupt
> Enable Flags. Die eigentlichen Interrupt-Flags sind beim F4 im Status
> Register.

Ok, aber das StatusRegister ist ja nur readable, da kann ich nichts 
reinschreiben.

Lars F. schrieb:
> Vergleiche mal die Registermaps auf Seite 1021 beim F4 und Seite 950f
> beim F3.

Danke, schaue mir das mal an.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren