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
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.
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.
>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!
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.
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" |
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.