Forum: Mikrocontroller und Digitale Elektronik Softwarereset STM32F4?


von Fritz (Gast)


Lesenswert?

Die Interruptsoftware des STM32F4.. discovery landet bei einem 
unerwarteten Interrupt bzw. Absturz in einer Endlosschleife. Die würde 
ich gerne durch einen (Software-) reset ersetzen, damit das Programm 
wieder von vorne anfängt.

Hat das schon jemand gemacht?
Ich habe mich mit dem AIRCR-Register gespielt, das hat aber nicht 
funktioniert.

von hp-freund (Gast)


Lesenswert?

Watchdog?
Der ist eigentlich dafür gemacht.

von Ralph (Gast)


Lesenswert?

Nun ja, der STM wird in diesem Fall zu einem exception Vector springen.
Bei ARM ist die Vectortabelle meist in den ersten X Worten des 
Addressbereiches angeordnet.

Jetzt mal einen Blick ins Datenblatt welcher exception Vector bei einem 
unerwarteten Interrupt angesprungen wird.
Dort wird dann eine Adresse hinterlegt an die in diesem Fall  gesprungen 
werden soll.
Und an Diese Adresse legst du eine Funktion die in diesem Fall zb einen 
Reset ausführt, oder zb das Interrupt flag Register auf der Uart 
ausgibt, oder ,........


Oder hinterlege in der Interruptservice Routine eine Default Funktion 
die angesprungen werden soll wenn ein unerwarteter ( nicht 
konfigurierter ) Interrupt auftritt.

von holger (Gast)


Lesenswert?

>Die Interruptsoftware des STM32F4.. discovery landet bei einem
>unerwarteten Interrupt bzw. Absturz in einer Endlosschleife. Die würde
>ich gerne durch einen (Software-) reset ersetzen, damit das Programm
>wieder von vorne anfängt.

Ist doch gut das er das macht. Dann weisst du wenigstens
das was faul ist. Also behebe den Fehler und versuch keine
Workarounds.

von Michael D. (Gast)


Lesenswert?

NVIC_SystemReset();

von Fritz (Gast)


Lesenswert?

Danke mal für die Ratschläge.
Aber manchmal sieht man den Wald vor lauter Bäumen nicht.
Ich arbeite mit der CooCox IDE und nach einem Absturz dauerte eine Reset 
über die IDE recht lang, weil das Programm wieder runtergeladen wird.
Die einfachste Lösung ist aber die Resettaste am board, Programm startet 
von neuem, die IDE funktioniert auch.

von Robert H. (userx)


Lesenswert?

Hallo

Gibts mittlerweile schon ne Lösung bzgl. Soft-Reset mittels AIRCR  ??
NVIC_SystemReset();  gibt es zB. in den STM32F4 libs nicht

von Martin K. (martinko)


Lesenswert?

Robert Haslinger schrieb:
> Hallo
>
> Gibts mittlerweile schon ne Lösung bzgl. Soft-Reset mittels AIRCR  ??
> NVIC_SystemReset();  gibt es zB. in den STM32F4 libs nicht

Doch, in core_cm4.h, das ist eine normale Cortex-M4 funktion der in der 
CMSIS.

Gruß Martin

von Robert H. (userx)


Lesenswert?

Danke
Ich habs gefunden. Funktioniert wie gewünscht.

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.