Я использую MDK-Lite версии 5.23 с платой STM32F072B-Disco «Discovery» STMicroelectronics и пытаюсь использовать пример Flash, предоставленный образцами Discovery.
Я использовал эту плату и набор инструментов для других примеров, и я кодировал некоторые работы SPI и GPIO. IDE работает как чемпион. Тем не менее, для этого конкретного проекта я могу создать код и запустить его, загрузив и используя кнопку сброса. Я не могу использовать отладчик в проекте, как только я использую процедуру HAL_FLASHEx_Erase (). После выполнения этой процедуры в среде IDE появляется диалоговое окно «Не удается получить доступ к цели. Завершение сеанса отладки».
Что бы это ни стоило, я знаю, что это не ошибка программирования, потому что, если я скачаю код, а затем выполню код, нажав кнопку сброса, он будет работать. Я использовал тот же отладчик с платой TI, и он также мог программировать флэш-память и выполнять флэш-процедуры. Я почти уверен, что не стираю часть flash, где хранится код, так что это не так.
Если я перейду эту строку в main.c
if (HAL_FLASHEx_Erase(&EraseInitStruct, &PageError) != HAL_OK)
тогда это отбрасывает сеанс отладки. Если вместо этого я войду в одну и ту же строку, а затем перейду через каждый из вызовов в процедуре флэш-стирания, это сработает и в конечном итоге выйдет из процедуры, и я смогу отладить оставшуюся часть кода.