Używam MDK-Lite w wersji 5.23 z płytą „Discovery” STMicroelectronics STM32F072B-Disco i próbuję użyć przykładu Flash dostarczonego przez próbki Discovery.
Użyłem tej płyty i łańcucha narzędzi do innych przykładów i napisałem trochę pracy w SPI i GPIO. IDE działa jak mistrz. Jednak w przypadku tego konkretnego projektu mogę zbudować kod i uruchomić go, pobierając i używając przycisku resetowania. Nie mogę użyć debugera w projekcie, jak tylko użyję procedury HAL_FLASHEx_Erase (). Po uruchomieniu tej procedury IDE wyświetla okno dialogowe „Nie można uzyskać dostępu do celu. Zamykanie sesji debugowania”.
Co do tego, co warto, wiem, że nie jest to błąd programowy, ponieważ jeśli pobiorę kod, a następnie wykonam go, naciskając przycisk reset, zadziała. Użyłem tego samego debugera z płytą TI i był on również w stanie zaprogramować flash i wykonać procedury flashowania. Jestem prawie pewien, że nie usuwam części flasha, w której przechowywany jest kod, więc to nie tak.
Jeśli przekroczę tę linię w main.c
if (HAL_FLASHEx_Erase(&EraseInitStruct, &PageError) != HAL_OK)
następnie przerywa sesję debugowania. Jeśli zamiast tego wejdę do tej samej linii, a następnie przejdę przez każde z wywołań procedury usuwania pamięci flash, to zadziała i ostatecznie wyjdzie poza procedurę i będę mógł debugować resztę kodu.