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?