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.
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.
>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.
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.
Hallo Gibts mittlerweile schon ne Lösung bzgl. Soft-Reset mittels AIRCR ?? NVIC_SystemReset(); gibt es zB. in den STM32F4 libs nicht
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.