ARM GCC - int-funktion liefert verschiedene Werte aus Main und C-File

Gast #5810593
Hallo Zusammen,

ich bin am Verzweifeln mit dem ARM-GCC:

Ich habe 3 Source-Files:

*main.c
*file1.c
*file2.c

in file1.c befindet sich eine Interrupt Service Routine die eine 
Variable ändert, die als

static volatile uint8_t variable

definiert ist. Das file1.c enthält auch eine uint8_t-Funktion die den 
Variablenwert zurückliefern soll:

uint8_t variable(void) {
  return variable;
}

Wenn ich die Funktion aus der Main aufrufe, dann funktioniert alles.
Wenn ich die Funktion aber aus einer Funktion innerhalb von file2.c 
aufrufe, dann kriege ich immer 0 zurück. Egal was ich einstelle.

Compiler Optimization is Os, da der Platz schon ziemlich eng ist.

Was habe ich hier übersehen?

Danke für die Hilfe
mws
Gast #5810597
> file1.c:
> static volatile uint8_t variable
>
> uint8_t variable(void) {
>   return variable;
> }

Das sollte mindestens zwei Fehler/Warnungen geben.  Außerdem werden 
static Variablen nicht exportiert und sind nur in dem einen File 
verfügbar - hast wohl in dem anderen File ne weitere Variable mit 
gleichem Namen definiert.
Gast #5810598
Upps - vergiss den zweiten Satz, spielt hier keine Rolle, da du die 
Funktion benutzt und nicht direkt die statische Variable.

Poste am besten den tatsächlichen Code.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 7 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.