Forum: Mikrocontroller und Digitale Elektronik STM32L Flash abschalten bei Low Power Sleep Mode


von Andre St. (Gast)


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é

von Jim M. (turboj)


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.

von Andre St. (Gast)


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?

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
Noch kein Account? Hier anmelden.