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)
その後、デバッグセッションをドロップします。代わりに同じ行にステップインしてから、フラッシュ消去ルーチンの各呼び出しをステップオーバーすると、それが機能し、最終的にルーチンからステップアウトし、残りのコードをデバッグできます。