J'utilise MDK-Lite version 5.23 avec une carte STMicroelectronics STM32F072B-Disco "Discovery" et j'essaie d'utiliser l'exemple Flash fourni par les exemples Discovery.
J'ai utilisé cette carte et cette chaîne d'outils pour d'autres exemples et j'ai codé des travaux SPI et GPIO. L'IDE fonctionne comme un champion. Cependant, pour ce projet particulier, je peux créer le code et l'exécuter en téléchargeant et en utilisant le bouton de réinitialisation. Je ne peux pas utiliser le débogueur sur le projet dès que j'utilise la routine HAL_FLASHEx_Erase (). Une fois que j'exécute cette routine, l'EDI ouvre une boîte de dialogue "Impossible d'accéder à la cible. Arrêt de la session de débogage."
Pour ce que ça vaut, je sais que ce n'est pas une erreur de programmation car si je télécharge le code puis l'exécute en appuyant sur le bouton de réinitialisation, cela fonctionnera. J'ai utilisé ce même débogueur avec une carte TI et il était également capable de programmer le flash et d'exécuter des routines flash. Je suis sûr que je n'efface pas la partie de flash où le code est stocké, ce n'est donc pas ça.
Si je enjambe cette ligne dans main.c
if (HAL_FLASHEx_Erase(&EraseInitStruct, &PageError) != HAL_OK)
puis il abandonne la session de débogage. Si au lieu de cela j'entre dans la même ligne, puis que je passe par-dessus chacun des appels dans la routine d'effacement flash, cela fonctionnera et finira par sortir de la routine et je pourrai déboguer le reste du code.