STM32L Flash abschalten bei Low Power Sleep Mode

Gast #2985896
Lesenswert?

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é
#2986217
Lesenswert?

> 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.
Gast #2987720
Lesenswert?

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?

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