Gelegentlich kann es bei Fehlprogrammierung der GPIOs zu folgender, auch durch Reset oder Ein-Ausschalten des Kits nicht zu behebender Fehlermeldung kommen:
Error
No device found on target.
Reboot des PC, Neuinstallation von Treibern oder IDE ist in diesem Fall zwecklos. Dieses Verhalten zeigt sich gelegentlich, wenn Code heruntergeladen wurde, welcher GPIOs oder andere Peripheriekomponenten so umprogrammiert, dass die Debugschnittstelle (Welche auch über GPIOs läuft) nicht mehr funktioniert. Da der zuletzt heruntergeladene Code jedes mal bei Reset oder Stromeinschalten wieder ausgeführt wird, kann der Debugger nicht mehr mit dem Kit Verbindung aufnehmen.
Mögliche Loesung:
Vor dem Starten des Debuggers die rote Resettaste auf dem Kit drücken und gedrückt halten. (So wird die Ausführung des Schadhaften Codes verhindert)
Debugger starten, sobald der Debugger erfolgreich Kontakt mit dem Kit aufgenommen hat die Reset-Taste wieder loslassen.
Wenn die Reset-Taste zulange gedrückt wird, bekommt man eine Fehlermeldung, dass das Target im Dauerreset sei. Wird die Taste zuwenig lange gedrückt, kommt die bereits oben erwähnte Fehlermeldung.
Alternativ kann das Flash mittels der ST-Link Utility gelöscht werden.
ST-LINK UtilityCarme-Kit speisen und via USB-Debugschnittstelle verbinden
ST-Link Utility starten
Auf Connect (1) klicken
Erfolgreiche Verbindung wird in (2) angezeigt
Auf Chip Erase (3) klicken
Nun sollte das Kit wieder ansprechbar sein
Das Aussschalten der Interruptanforderung darf nicht die letzte Instruktion einer Interruptroutine sein. Ist das Löschen es Interruptflags im Statusregister die letzte Instruktion, wird sie gleich wieder aufgerufen.
Dies weil das Löschen des Flags aufgrund der Pipeline und anderen Latenzzeiten länger dauert als das Beenden der Interruptroutine. Somit sieht der Prozessor nach Beendiung der Interruptroutine immer noch eine Interruptanforderung und verzweigt gleich wieder in die Interruptroutine.
Das Problem kann behoben werden, wenn in der Interruptroutine als erstes das Flag gelöscht und anschliessend die eigentliche Arbeit ausgeführt wird.