Hallo Zusammen, ich möchte gerne den STM32L151 in den Low Power Sleep Modus schalten (WFI). Um mehr Strom zu sparen soll vorher der Flash abgeschaltet werden. Soweit kein Problem, jedoch muss die ISR die zum INT gehört vorher im RAM stehen, ebenso muss der NVIC auch den Vector Table im RAM stehen haben und darauf zugreifen können. Beides ist mir noch nicht wirklich klar wie ich es technisch umsetzen muss. Kann man das Laden des VT und der ISR auch möglicherweise dynamisch zur Laufzeit durchführen? Gruss André
> ISR die zum INT gehört vorher im RAM stehen Das erforder z.B. beim GCC etwas Linker Skript Magie. Beispiele habe ich IIRC hier im Forum schon gesehen. > Vector Table im RAM Such mal nach VTOR. Das ist das Register - IIRC im NVIC - welches die Addresse der Vector Table enthält. Kann man umsetzen, allerdings ist Alignment zu beachten, das deutlich gröber als 4 Byte ist - IIRC 256 oder 512 Byte. > Low Power Sleep Modus Schau aber mal im Manual nach, ob der den Flash nicht automagisch mit aufweckt.
Erst mal vielen Dank für die Antwort. Ich denke die ISR ins RAM zu verschieben geht bei GCC mit void __attribute__((.data)) ISR_Handler(void). Man muss jetzt irgendwie noch den VT ins RAM kopieren und die VT Adresse wohl wie du sagst im entsprechenden Register setzen. Ich werde das die Tage mal ausprobieren. Selbst wenn der Flash nicht autom. eingeschaltet werden sollte kann man das ja auch gut im ISR bewerkstelligen. Ich frage mich nur noch ob man die Funktion die den __WFI aufruft auch im RAM ausgeführt werden muss?
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.