Ich verwende MDK-Lite Version 5.23 mit einer STMicroelectronics STM32F072B-Disco "Discovery" -Karte und versuche, das in den Discovery-Beispielen bereitgestellte Flash-Beispiel zu verwenden.
Ich habe dieses Board und diese Toolchain für andere Beispiele verwendet und einige SPI- und GPIO-Arbeiten codiert. Die IDE funktioniert wie ein Champion. Für dieses spezielle Projekt kann ich den Code jedoch erstellen und ausführen, indem ich die Schaltfläche zum Zurücksetzen herunterlade und verwende. Ich kann den Debugger nicht für das Projekt verwenden, sobald ich die Routine HAL_FLASHEx_Erase () verwende. Sobald ich diese Routine ausgeführt habe, öffnet die IDE ein Dialogfeld "Kein Zugriff auf Ziel. Debug-Sitzung wird beendet."
Ich weiß, dass es kein Programmierfehler ist, denn wenn ich den Code herunterlade und ihn dann durch Drücken der Reset-Taste ausführe, funktioniert er. Ich habe denselben Debugger mit einer TI-Karte verwendet und er konnte Flash programmieren und auch Flash-Routinen ausführen. Ich bin mir ziemlich sicher, dass ich den Teil von Flash, in dem der Code gespeichert ist, nicht lösche, also ist es nicht so.
Wenn ich in main.c über diese Zeile gehe
if (HAL_FLASHEx_Erase(&EraseInitStruct, &PageError) != HAL_OK)
dann wird die Debug-Sitzung beendet. Wenn ich stattdessen in dieselbe Zeile gehe und dann jeden der Aufrufe in der Flash-Löschroutine überschreite, funktioniert dies und verlässt schließlich die Routine, und ich kann den Rest des Codes debuggen.