Forum: Mikrocontroller und Digitale Elektronik Kann USART für STM32 nicht in externem file benutzen. Wie Handle einbinden?


von Mike (Gast)


Lesenswert?

Hallo Zusammen,

ich habe ein Projekt mit STM32 und STM32CUBE IDE.

Ich habe die komplette Konfiguration für den MCU über die CUBE IDE 
erstellt. Nun möchte ich alle UART verwendenden Funktionen in eine 
UART_Funktionen.c mit der entsprechenden .h verschieben.
Die Dateien sind korrekt eingebunden und Code in den Dateien wird auch 
kompiliert.

Leider kann ich in den externen Dateien keinen UART verwenden, da im 
HAL_UART_Transmit_IT der Handle (&huart2) auf die entsprechende TypeDef 
nicht gefunden wird.
Was muss ich noch einbinden? Wo wird der Handle definiert?

Viele Grüße und Danke
Mike

von Stefan F. (Gast)


Lesenswert?

Mike schrieb:
> Wo wird der Handle definiert?

Hat deine IDE keine Suchfunktion? Das kann doch nicht so schwer sein, in 
allen *.h Dateien nach "huart2" zu suchen - notfalls mit dem 
Dateimanager.

von Martin B. (ratazong)


Lesenswert?

CubeMX (und darauf baut die IDE auf) definiert die nur in main.c. Wenn 
Du extern darauf zugreifen willst, musst Du die in einem h-file selber 
als extern deklarieren.

von dummschwaetzer (Gast)


Lesenswert?

>Wo wird der Handle definiert?
in der main.c
>Was muss ich noch einbinden?
in deiner uart.h
#include "main.h"
zur Not auch nur die .h, in der der Datentyp UART_HandleTypeDef 
deklariert wird.

in deiner uart.c entweder global oder in jeder Fuktion, die huart2 
verwendet:
extern UART_HandleTypeDef huart2;

> musst Du die in einem h-file selber als extern deklarieren.
Im h-File ist ganz schlechter Stil, das ist eine Variable, die gehört in 
kein h-File!

von John Doe (Gast)


Lesenswert?

dummschwaetzer schrieb:
>> musst Du die in einem h-file selber als extern deklarieren.
> Im h-File ist ganz schlechter Stil, das ist eine Variable, die gehört in
> kein h-File!

Es geht um Deklaration, nicht um Definition.

von pegel (Gast)


Angehängte Dateien:

Lesenswert?

Kann es sein, dass nur ein Häkchen fehlt?

Dann wird alles schön getrennt.
Für eigene Dateien brauchts dann bei Bedarf nur ein:
1
#include "usart.h"

von Mike (Gast)


Lesenswert?

pegel schrieb:
> Kann es sein, dass nur ein Häkchen fehlt?
>
> Dann wird alles schön getrennt.

Perfekt, das ist genau das, was ich gesucht habe. Dann wird die main.c 
auch übersichtlicher.
Vielen Dank!

Danke auch an alle anderen Kommentatoren :-)

Schönes WE euch!

Mike

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.