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
> 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.
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.
mws_master schrieb: > definiert ist. Das file1.c enthält auch eine uint8_t-Funktion die den > Variablenwert zurückliefern soll: > > uint8_t variable(void) { > return variable; > } Ist die Funktion auch im Header deklariert?
Zeige ein Minimal-Beispiel mit dem richtigen Code und die Disassembler-Ausgabe davon.
Wen in ein anderes File, soll das diese variable doch als "extern" definiert werden ! Sonst wird einfach eine neue variable declariert.
RP6conrad schrieb: > Wen in ein anderes File, soll das diese variable doch als "extern" > definiert werden ! Darum geht es nicht. Er hat ja eine Getter-Funktion, welche eine solche globale Variable überflüssig macht.
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.