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

Gast #5810593
Lesenswert?

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
Lesenswert?

> 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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren