Hallo. Hab ein Problem, was ich mir nicht erklären kann: Verwende Keil 5.23 & STM32F405 mit CAN1. CMSIS 4.5.0 & STM32F4xx_DFP 1.0.8. Habe eine Setup-Routine für den CAN1 geschrieben. Habe folgende 4 lokale Vars in Verwendung: void canSetup(void) { int i; GPIO_InitTypeDef GPIO_InitStructure; CAN_InitTypeDef CAN_InitStructure; NVIC_InitTypeDef NVIC_InitStructure; CAN_FilterInitTypeDef CAN_FilterInitStructure; ... eigentlicher Init Code .... } Wenn ich nun mit Debugger starte (Ctrl-F5) und mit F5 laufen lasse, erhalte ich im Command-Fenster "Cannot access memory" und im Disassembly lauter "0000 movs r0,r0". Wenn ich allerdings mit F10 bis zur while (1)-Schleife in main.c im Einzelschritt durchgehe, kann ich die Anwendung danach laufen lassen. Vertausche ich allerdings die Reihenfolge der Vars wie unten, geht wieder alles wie erwartet. void canSetup(void) { int i; CAN_InitTypeDef CAN_InitStructure; (getauscht) GPIO_InitTypeDef GPIO_InitStructure; (getauscht) NVIC_InitTypeDef NVIC_InitStructure; CAN_FilterInitTypeDef CAN_FilterInitStructure; ... eigentlicher Init Code .... } Hab jetzt schon mehrmals gegen geprüft. Auch schon PC & Hardware komplett ausgeschaltet. Hab immer das gleiche Verhalten. Hat da jemand eine Ahnung was dahinter steckt? Das Verhalten macht mich gerade etwas nachdenklich... Vielen Dank. Pepe.
Hast Du Dir mal angesehen, wie groß diese vier Strukturen sind, und das mit der Größe des Stacks abgeglichen?
Stacksize ist 1024. Und die 4 Structs haben insgesamt 38 Byte. Sollte also kein Thema sein. Außerdem kann ich mir nicht erklären, warum die Reihenfolge der Structs was ausmacht. Hab das Ganze jetzt noch auf einem anderem PC ausprobiert und habe dort das gleiche Ergebnis. Die eine Reihenfolge funktioniert, die andere macht beim Starten Probleme.
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.