STM32 Wakeup STOP1 mit GPIO

Gast #6091615
Lesenswert?

Hallo Forum,

ich arbeite an einer IR Fernbedienung mit Batteriespannungsversorgung 
auf Basis eines STM32G0.
Mit Low Power Modes habe ich nie wirklich etwas am Hut gehabt und bin 
nach tagelangem Lesen leicht überfordert.
Als Mode habe ich mir den Stop1 ausgeguckt, weil das Hardwaredesign 
bereits steht und eine vertretbare Batterielebensdauer zu erwarten ist.

Bei Benutzereingabe (Taster, Drehencoder, IR Empfänger zum anlernen) 
soll der Controller seinen Job machen und wieder in den Stop Mode 
wechseln.

Der Stop1 kann nach Recherche mit dem RTC oder durch irgendeinen GPIO 
verlassen werden

https://www.st.com/content/ccc/resource/training/technical/product_training/group0/21/0c/5b/77/0e/aa/48/45/STM32G0-System-Power-control-PWR/files/STM32G0-System-Power-control-PWR.pdf/_jcr_content/translations/en.STM32G0-System-Power-control-PWR.pdf

Lt. HAL_Manual wird der Stop1 aktiviert
1
HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI);

WFI/WFE gibt an, ob per Interrupt oder Event aufgeweckt wird.
Was ein Event ist, habe ich nicht genau rausgefunden...

Soweit, so gut.

Ich möchte den Controller aber durch folgende Eingaben aufwecken:
a) Drehencoder am TIMER GPIO
b) Taster an GPIO
c) TSOP IR Empfänger am GPIO

Wenn ich jetzt per EXT Interrupt wecken möchte, muss ich doch den GPIO 
Mode anpassen?!
1
GPIO_InitTypeDef G; 
2
G.Pin = GPIO_PIN_13;   
3
G.Mode = GPIO_MODE_IT_FALLING;
4
G.Pull = GPIO_NOPULL;   
5
HAL_GPIO_Init(GPIOC, &G);

Jetzt sind z.B. die Encoder GPIO ja als AF konfiguriert
1
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
also nicht als Interrupt Eingänge zu gebrauchen.


Habe ich ein Verständnisproblem???

Wie geht man an so eine Applikation ran?
#6091692
Lesenswert?

Ich arbeite mit dieser HAL nicht. Normal schaltet man einen Timer erst 
einmal aus, danach werden die Pins umgestellt.


Auf dem Rückweg dann umgedreht. Pins konfigurieren und danach den Timer 
wieder aktivieren.


Wenn du wirklich Low power haben möchtest, solltest du eh deine 
komplette Peripherie dementsprechend einstellen. zB ADC aus, die 
einzelnen Ports alle aus, die nicht benötigt werde, usw.

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