Estou usando o MDK-Lite versão 5.23 com uma placa STMicroelectronics STM32F072B-Disco "Discovery" e estou tentando usar o exemplo em Flash fornecido pelos exemplos do Discovery.
Usei esta placa e a cadeia de ferramentas para outros exemplos e codifiquei alguns trabalhos de SPI e GPIO. O IDE funciona como um campeão. No entanto, para este projeto em particular, posso criar o código e executá-lo baixando e usando o botão de redefinição. Não consigo usar o depurador no projeto assim que uso a rotina HAL_FLASHEx_Erase (). Depois de executar essa rotina, o IDE exibe uma caixa de diálogo "Não é possível acessar o destino. Desligando a sessão de depuração".
Pelo que vale, sei que não é um erro de programação, porque se eu fizer o download do código e depois executá-lo pressionando o botão de reset, ele funcionará. Eu usei esse mesmo depurador com uma placa de TI e ele foi capaz de programar o flash e executar rotinas também. Tenho certeza de que não estou apagando a parte do flash em que o código está armazenado, então não é isso.
Se eu pular essa linha em main.c
if (HAL_FLASHEx_Erase(&EraseInitStruct, &PageError) != HAL_OK)
então deixa cair a sessão de depuração. Se, em vez disso, pular para a mesma linha e passar por cima de cada uma das chamadas na rotina de exclusão do flash, ela funcionará e eventualmente sairá da rotina e eu posso depurar o restante do código.