gemeinsame Variable in verschiedenen C-Files wie geht das?

Gast #580821
Lesenswert?
• ▲
▼
Hallo!

Ich benutze die UART-Ringpuffer-Bibliothek von Peter Fleury.
Diese binde ich über die Headerdatei uart.h ein.

Dateien:

MeinProgram.c//Meine Quellcodedatei
uart.h       //Header von Peter Fleury
uart.c       //Ringpuffer für Uart von Peter Fleury

Wie kann ich es erreichen eine gemeinsame Variable zu haben, auf die ich 
in MeinProgram.c und in der ISR von uart.c benutzen kann?
(ich möchte in meinem Programm eine Statusvariable, die anzeigt sobald 
ein Zeichen empfangen wurde, also der Uart-receive Interrupt ausgelöst 
wurde).
Wo muss diese Variable deklariert werden? In der uart.h? Mit extern?

Ich habe schon lange gegoogelt und auch im Forum gesucht, aber keine 
brauchbaren Hinweise gefunden.

Vielen Dank an alle die sich die Zeit nehmen,

Carsten
Gast #580830
Lesenswert?
• ▲
▼
In uart.c außerhalb der Funktionsdefinitionen:
1
int status;

In uart.h:
1
extern int status;

Wenn uart.h in MainProgramm.c includet wird, kannst du ganz normal auf
die Variable zugreifen.

Da du die Variable in einer ISR veränderst, solltest du vor das int in
den obigen Deklarationen noch ein volatile schreiben, damit der
Compiler die Variablenzugriffe nicht zu stark optimiert.

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.