stm32f4 uart

Gast #4261550
Lesenswert?

Hallo zusammen,

ich bin Einsteiger was STM32 und CooCox betrifft und wollte zum 
Einarbeiten einfach mal über die serielle Schnittstelle (uart) Daten 
senden.

Leider funktioniert gar nichts. Als Grundlage verwende ich die 
Cube-Library, die aber wie ich finde sehr unübersichtlich ist.

Kann mir vielleicht jemand Hinweise geben was man alles konfigurieren 
muss bzw. einbinden muss??
Vielleicht kann mir jemand ein Beispielprogramm zu Verfügung stellen.

Bin für jeden Tipp dankbar.

Schöne Grüße,
Gast #4261771
Lesenswert?

Ohne Cube geht es ganz einfach:

- Im RCC den gewuenschten USART einschalten.
- GPIO-Pins auf die alternate Funktionen konfigurieren.
- GPIO->MODER setzen
- USART TransmitEnable, ReceiveEnable und UE setzen
- USART Baudrateregister mit 'SYSCLK' / 'BAUDRATE' initialisieren

Ins USART->TDR ein 'U' schreiben.

Das doch nun wirklich nicht schwer...
Gast #4261776
Lesenswert?

Vielen Dank für die schnelle Antwort.

Dieses Tool ist wirklich eine enorme Erleichterung :)

Eine Frage habe ich trotzdem noch:
Die UART-Schnittstelle will trotzdem noch nicht funktionieren.
Welche Files müssen in CoIDE eingebuden werden??
Es kommt zwar keine Fehlermeldung, kann mir aber nicht vorstellen dass 
die main.c ausreicht.

Oder ist der Befehl falsch:

HAL_UART_Transmit_IT(&huart1, "TEST", 4);



Danke schonmal :)
Gast #4262192
Lesenswert?

Ich habe alle notwendigen Files eingebunden, die LED's die ich ansteuern 
möchte funktionieren, aber die UART-Schnittstelle leider immer noch 
nicht.

Woran kann das liegen??
Nach dem initialisieren schreibe ich:

  if(HAL_UART_Init(&huart1) != HAL_OK)
  {
    // in case of Initiliazation Error */
    while(1)
    {
    }
  }

  HAL_UART_Transmit_IT(&huart1, "TEST", 4);

ist da was falsch dran?? In einem Beispielprogramm funktioniert das so.

Gruß,
Gast #4262280
Lesenswert?

Schau doch mal nach was dieses "HAL_UART_Init(&huart1)" macht.

Es müsste ja alles enthalten sein wie weiter oben bereits erwähnt:
- Im RCC den gewuenschten USART einschalten.
- GPIO-Pins auf die alternate Funktionen konfigurieren.
- GPIO->MODER setzen
- USART TransmitEnable, ReceiveEnable und UE setzen
- USART Baudrateregister mit 'SYSCLK' / 'BAUDRATE' initialisieren
Gast #4262332
Lesenswert?

In welcher Form liegt dein stm32f4 vor?
Blank, Nucleo, Discovery?
Ist uart1 überhaupt frei?

jumper schrieb:
> if(HAL_UART_Init(&huart1) != HAL_OK)

Und das landet auch nicht in der Endlosschleife?

Da Du HAL_UART_Transmit_IT benutzt muss auch der Interrupt eingeschaltet 
und konfiguriert werden.
Gast #4262333
Lesenswert?

Tja,

ohne Plan wird das auch mit HAL nuex.

Wenn man nicht weiss welche Register gesetzt werden muessen,
muss man wohl mal das DB befragen.

Soviele sind es ja nicht.

Wer HAL-Kram "schoen" findet, der soll ihn benutzen.
Der darf dann auch selber suchen...
Gast #4262791
Lesenswert?

Juhu es funktioniert :)

@ hp-freund: Vielen Dank für deine Hilfe, ich habe vergessen das Hackerl 
bei den globalen interrupts zu setzen.

Auch den anderen vielen Dank für die schnellen hilfreichen Antworten.

Schöne Grüße

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