我在STMicroelectronics STM32F072B-Disco“发现”板上使用MDK-Lite版本5.23,并且尝试使用发现示例提供的Flash示例。
我已将该板和工具链用于其他示例,并且对一些SPI和GPIO工作进行了编码。IDE就像冠军。但是,对于这个特定项目,我可以通过下载并使用“重置”按钮来构建代码并运行它。一旦使用HAL_FLASHEx_Erase()例程,就无法在项目上使用调试器。一旦执行了该例程,IDE就会弹出一个对话框“无法访问目标。正在关闭调试会话”。
对于它的价值,我知道这不是编程错误,因为如果我下载代码,然后通过按复位按钮执行代码,它将起作用。我在TI板上使用了相同的调试器,它还能够对闪存进行编程并执行闪存例程。我敢肯定,我不会擦除闪存中存储代码的部分,所以不是那样。
如果我在main.c中跨过这一行
if (HAL_FLASHEx_Erase(&EraseInitStruct, &PageError) != HAL_OK)
然后它将删除调试会话。如果我改为进入同一行,然后逐步执行Flash擦除例程中的每个调用,则它将起作用并最终退出该例程,并且我可以调试其余代码。