Sto utilizzando MDK-Lite Versione 5.23 con una scheda "Discovery" STM32ro0BB-Disco STMicroelectronics e sto cercando di utilizzare l'esempio Flash fornito dagli esempi di Discovery.
Ho usato questa scheda e toolchain per altri esempi e ho codificato alcuni lavori SPI e GPIO. L'IDE funziona come un campione. Tuttavia, per questo particolare progetto posso creare il codice ed eseguirlo scaricando e utilizzando il pulsante di ripristino. Non riesco a utilizzare il debugger sul progetto non appena utilizzo la routine HAL_FLASHEx_Erase (). Una volta eseguita quella routine, l'IDE apre una finestra di dialogo "Impossibile accedere alla destinazione. Chiusura della sessione di debug".
Per quello che vale, so che non è un errore di programmazione perché se scarico il codice e quindi eseguo il codice premendo il pulsante di ripristino funzionerà. Ho usato questo stesso debugger con una scheda TI ed è stato in grado di programmare flash ed eseguire anche routine di flash. Sono abbastanza sicuro di non cancellare la parte di flash in cui è memorizzato il codice, quindi non è così.
Se passo oltre questa linea in main.c
if (HAL_FLASHEx_Erase(&EraseInitStruct, &PageError) != HAL_OK)
quindi rilascia la sessione di debug. Se invece passo nella stessa linea e passo su ciascuna delle chiamate nella routine di cancellazione flash, allora funzionerà e alla fine uscirò dalla routine e posso eseguire il debug del resto del codice.