Forum: Mikrocontroller und Digitale Elektronik STM32 Interrupt Rücksprung ins Nirvana


von Andre R. (ryan87)


Angehängte Dateien:

Lesenswert?

Guten Morgen zusammen,

ich mache gerade meine ersten Gehversuche mit einem STM32. Ich verwende 
dafür ein Demoboard von Futurlec. Die ersten LEDs blinken auch schon 
erfolgreich.
Nun versuche ich seit 2 Tagen die interrupts hinzubekommen...
Mittlerweile bin ich soweit, das er zwar in meine Interrupt-Routine 
reinspringt, alles ausführt was da drin steht, aber er springt nicht 
wieder in die Hauptschleife zurück. Das macht sich daran bemerkbar das 
mein Lauflicht stehen bleibt.
Ich hab mal das erstellte Listing (via objdump) angehangen. Es geht um 
den handler EXTI0_Handler.
Ich habe leider noch keine Möglichkeit fürs On-Chip debuggen und wäre 
für jede Hilfe sehr dankbar.

Gruß
Andre

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

> Ich hab mal das erstellte Listing (via objdump) angehangen.
Jetzt wäre der passende C-Code auch noch interessant...

von (prx) A. K. (prx)


Lesenswert?

Es wird nötig sein, das Pending Bit vom EXTI im Handler zurück zu 
setzen, sonst bleibt der Interrupt-Request stehen und er dreht permanent 
im Handler die Runde.

von Markus M. (Firma: EleLa - www.elela.de) (mmvisual)


Lesenswert?

Zum Test kannst Du auch ein Ausgangs-Bit im Interrupt negieren. Dann 
kannst Du im Oszi sehen wie oft der im Interrupt rein springt.

von Mike R. (thesealion)


Lesenswert?

Ich hatte bei den STM32 am anfang das Problem, das ich die 
"startup_stm32..." nicht mit in mein Projekt eingebunden hatte.

Solange ich keine Interrupts benutzt habe funktionierte alles, mit 
Interrupts hat jedes mal der "HardFault_Handler" zugeschlagen. Das 
Problem war dann einfach, das Vektortabelle für die Interrupts nicht 
gefüllt war, und genau das macht das startup-file.

von Andre R. (ryan87)


Angehängte Dateien:

Lesenswert?

Ich habe mal noch die Hauptdatei, die startup datei und linker und 
makefile angehangen. Kompiliere alles mit codesourcery lite. In der 
Listing-Datei sieht man aber auch das die Interrupts an der richtigen 
stelle liegen.

von (prx) A. K. (prx)


Lesenswert?

Sachichdoch. Interrupt-Request bleibt stehen und der Handler läuft im 
Dauerfeuer, weil Pending-Bit im Handler nicht gelöscht. Die STM-Lib hat 
einen Vorteil: Man kann auch im Disassembly noch manches erkennen.

von Andre R. (ryan87)


Lesenswert?

Ich hab grad nochmal in den Beispielen der FWlib geschaut. Wenn ich das 
richtig sehe fehlt mir ein:
1
EXTI_ClearITPendingBit(0);
im Interrupt.

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.