STM32: wie Struktur übergeben

Gast #5950058
Lesenswert?
• ▲
▼
Hallo,

ich habe ein STM32 und möchte in einer Funktion den aktuellen Pegel des 
Portpins auf dem Display ausgeben. Die Funktion wird an vielen Stellen 
aufgerufen und soll den Quellcode an den Stellen übersichtlicher machen 
(jeweils nur 1 Quellcodezeile).

Mit der Funktionsdeklaration habe ich gewisse Probleme. Es funktioniert 
zwar, aber der Compiler meckert, wenn ich die Datei über *.h einbinde.

1
void pinpegel_ausgeben(GPIO_TypeDef* Port, uint16_t uiPin, unsigned int uiX, unsigned int uiY)
2
  {
3
  uint8_t currentRtcIntState;
4
  
5
  currentRtcIntState = HAL_GPIO_ReadPin(Port, uiPin);
6
  if(currentRtcIntState == 0)
7
    displaybefehl_text_ausgeben_TFT(uiX, uiY, "0");
8
  else
9
    displaybefehl_text_ausgeben_TFT(uiX, uiY, "1");
10

11
  return;

Der Aufruf der Funktion ist wie folgt:
1
pinpegel_ausgeben(MB1_RST_GPIO_Port, MB1_RST_Pin, KT0T+KT91H, KT91I+0*KT91J);



Wie muß die Funktionsdeklaration aussehen? Wäre nett, wenn mir jemand 
weiter helfen könnte.

Grüße Holger
Gast #5950116
Lesenswert?
• ▲
▼
Holger schrieb:
> Mit der Funktionsdeklaration habe ich gewisse Probleme. Es funktioniert
> zwar, aber der Compiler meckert, wenn ich die Datei über *.h einbinde.

Falls du Funktionen über *.h Dateien einbindest ist das
grundsätzlich der falsche Weg.

Funktionen werden in *.c Dateien geschrieben und deren Prototypen
in *.h Dateien für andere bekannt gemacht.
Gast #5950122
Lesenswert?
• ▲
▼
Wenn ich die Funktion in diagnose.h deklariere, kommt folgende Meldung:
unknown type name 'GPIO_TypeDef' in diagnose.h

Gebe ich nichts in diagnose.h an, so kommt in der *.c die folgende 
Warnung:
implicit declaration of function 'pinpegel_ausgeben'; did you mean 
'statsbilder_neu_ausgeben'? [-Wimplicit-function-declaration]

Ich verwende Segger V4.16
Gast #5950127
Lesenswert?
• ▲
▼
Ungebildeter schrieb:
> Falls du Funktionen über *.h Dateien einbindest ist das
> grundsätzlich der falsche Weg.
>
> Funktionen werden in *.c Dateien geschrieben und deren Prototypen
> in *.h Dateien für andere bekannt gemacht.

In diagnose.c ist diese mit Funktion mit "void 
pinpegel_ausgeben(GPIO_TypeDef* Port, uint16_t uiPin, unsigned int uiX, 
unsigned int uiY)" definiert.

In diagnose.h das selbe, nur mit Strichpunkt hinten dran. Wie erwähnt, 
geht das Ganze nicht, wenn ich die Bekanntmachung in diagnose.h mache.
Gast #5950128
Lesenswert?
• ▲
▼
Holger schrieb:
> Wenn ich die Funktion in diagnose.h deklariere, kommt folgende Meldung:
> unknown type name 'GPIO_TypeDef' in diagnose.h

Du brauchst dann noch die Bezüge aus gpio.h.

Also alle *.c Dateien die diagnose.h inkludieren sollten vorher
noch z.B. stm32f4xx_gpio.h (kommt drauf an welchen STM du
verwendest) inkludieren.
Gast #5950148
Lesenswert?
• ▲
▼
ich habe nun auch in diagnose.h
#include "stm32f7xx_hal.h" ergänzt. Nun kommt die Meldung nicht mehr.
1
#ifndef DIAGNOSE_H
2
#define DIAGNOSE_H
3

4
#include "stm32f7xx_hal.h"
5

6
void pinpegel_ausgeben(GPIO_TypeDef* Port, uint16_t uiPin, unsigned int uiX, unsigned int uiY);
7

8
#endif

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.