STMicroelectronics STM32F072B-Disco "Discovery"보드와 함께 MDK-Lite 버전 5.23을 사용하고 있으며 Discovery 샘플에서 제공하는 Flash 예제를 사용하려고합니다.
이 보드와 툴체인을 다른 예제로 사용했으며 SPI 및 GPIO 작업을 코딩했습니다. IDE는 챔피언처럼 작동합니다. 그러나이 특정 프로젝트의 경우 재설정 버튼을 다운로드하여 사용하여 코드를 빌드하고 실행할 수 있습니다. HAL_FLASHEx_Erase () 루틴을 사용하자마자 프로젝트에서 디버거를 사용할 수 없습니다. 해당 루틴을 실행하면 IDE에 "대상에 액세스 할 수 없습니다. 디버그 세션 종료"대화 상자가 나타납니다.
가치가있는 것은 코드를 다운로드 한 다음 재설정 버튼을 눌러 코드를 실행하면 작동하기 때문에 프로그래밍 오류가 아니라는 것을 알고 있습니다. TI 보드와 동일한 디버거를 사용했으며 플래시를 프로그래밍하고 플래시 루틴을 실행할 수도있었습니다. 코드가 저장된 플래시 부분을 지우지 않을 것이라고 확신합니다. 그렇지 않습니다.
main.c 에서이 줄을 넘어 서면
if (HAL_FLASHEx_Erase(&EraseInitStruct, &PageError) != HAL_OK)
그런 다음 디버그 세션을 삭제합니다. 대신 같은 줄로 들어간 다음 플래시 지우기 루틴의 각 호출을 단계별로 실행하면 작동하고 결국 루틴에서 빠져 나와 나머지 코드를 디버깅 할 수 있습니다.