Forum: Mikrocontroller und Digitale Elektronik [STM32] Probleme mit Peripherie nach STOP-Mode


von Mampf F. (mampf) Benutzerseite


Lesenswert?

Guten Nachmittag :)

ich hab einen STM32L1, der nach dem STOP-Mode manchmal nicht richtig 
funktioniert.

Beispielsweise hängt er dann in einer Re-Initialisierung des ADCs:
1
/* Enable ADC1 */
2
ADC_Cmd(ADC1, ENABLE);
3
/* Wait until the ADC1 is ready */
4
while (ADC_GetFlagStatus(ADC1, ADC_FLAG_ADONS) == RESET) {
5
}
6
7
ADC_TempSensorVrefintCmd(ENABLE);
8
while (!(PWR->CSR & PWR_CSR_VREFINTRDYF)) {
9
}

Manchmal in der oberen While-Schleife, manchmal in der unteren.

Ich hatte nach dem STOP-Mode die Hardware einfach nochmal komplett neu 
initialisiert und meistens funktioniert das ohne Probleme.

Die beste Problemlösung bisher war:
1
PWR_EnterSTOPMode(PWR_Regulator_LowPower, PWR_STOPEntry_WFI);
2
NVIC_SystemReset();


Kennt das Phänomen zufällig jemand und weiß Abhilfe?



Viele Grüße,
Mampf

: Bearbeitet durch User
von W.S. (Gast)


Lesenswert?

Ich kenn zwar dein Problem nicht, aber ich würde mir entweder die 
betreffenden Bibliotheksfunktionen genauer ansehen oder das 
Herunterfahren und Wiederbeleben selbst schreiben, ebenso die 
Initialisierungen.

Oftmals braucht es die passende Reihenfolge beim Wiederzuschalten von 
Peripherie-Cores und deren Taktversorgung, sonst hackt man womöglich auf 
einem Register herum, das grad eben noch taub ist, weil man vergessen 
hat, daß gerade dieses Register ab Reset ja per default aktiviert war, 
was aber nach Taktabschaltungen eben nicht mehr der Fall ist.

W.S.

von Mampf F. (mampf) Benutzerseite


Lesenswert?

W.S. schrieb:
> Oftmals braucht es die passende Reihenfolge beim Wiederzuschalten von
> Peripherie-Cores und deren Taktversorgung, sonst hackt man womöglich auf
> einem Register herum, das grad eben noch taub ist, weil man vergessen
> hat, daß gerade dieses Register ab Reset ja per default aktiviert war,
> was aber nach Taktabschaltungen eben nicht mehr der Fall ist.

Interessanter Tipp, danke :)

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.