Ich habe einen STM32F103C8T6 (auch bekannt als blaue Pille) und habe damit gearbeitet.
Manchmal - aus einem mir unverständlichen Grund - geht nach dem Debuggen (mit Eclipse) die Verbindung verloren und ich kann keine neue Debug-Sitzung starten.
Das einzige, was zu tun ist, ist die folgende zeitaufwändige Prozedur:
Das ist schon eine sehr langwierige Operation... gibt es eine bessere Lösung? Oder aus welchem Grund führt die Debugging-Sitzung dazu, dass der STM32 die Fähigkeit verliert, eine neue Debugging-Sitzung zu starten?
Und selbst dann erhalte ich in einigen Fällen beim Debuggen den folgenden Fehler:
23:23:02 : Can not connect to target!
If you're trying to connect to an STM32W1xx device, please select Normal or HotPlug mode from Target->Settings menu.
If you're trying to connect to a low frequency application , please select a lower SWD Frequency mode from Target->Settings menu.
23:23:03 : No target connected
Das Fragment der Eclipse-Projektkonfigurationsdatei:
# use software system reset
reset_config none
set CONNECT_UNDER_RESET 0
Ich habe das Problem einer der Fragen gefunden und es als Referenz für andere hinzugefügt, da es sich um einen nicht trivialen Standard handelt:
Wenn ich den STM32CubeMX verwende, den ich verwende, ist bei jeder Projekterstellung standardmäßig das folgende Element ausgewählt:
Dies bewirkt, dass in HAL_MspInit folgender Code generiert wird:
__HAL_AFIO_REMAP_REMAP_SWJ_DISABLE();
Sobald der Debugger diesen Befehl (der einer der ersten Befehle in HAL_Init ist, der in main() aufgerufen wird) übergibt, verliert der Debugger die Verbindung und sogar eine neue Debug-Session kann nicht gestartet werden.
Es kann leicht mit der Einstellung auf behoben werden
(auch SWD: Serial Wire Debug genannt und von ST Link 2 unterstützt).
Dies bewirkt, dass in HAL_MspInit folgender Code generiert wird:
__HAL_AFIO_REMAP_SWJ_NOJTAG();
Und das Debuggen funktioniert wie gewohnt.