最近在用STM32F4做相关项目的开发,在开发的过程中为了看清程序的执行,想对程序进行单步调试,但是发现会出现程序运行后卡在SystemInit函数中,且设置断点后点击执行到断点处时,发现程序在进行单步执行,且在
do
{
HSEStatus = RCC->CR & RCC_CR_HSERDY;
StartUpCounter++;
} while((HSEStatus == 0) && (StartUpCounter != HSE_STARTUP_TIMEOUT));
函数无法跳出。这说明是外部晶振没有起振,但是程序烧录进芯片是可以直接执行的,这至少是说明硬件不存在问题。结合前人关于无法跳出的问题,前人经验:修改Debug下的Dialog和Parameter.
Dialog内容应该修改为DARMSTM.DLL
Parameter内容应该修改为-pSTM32F4XX。此处应该写出单片机的具体型号,且不要写型号的最后两位。比如我用的单片机是STM32F407VGT6,在此处应该填写的是STM32F407VG。
此外,有可能在填写完这些后仍不能进入单步调试,此时应检查Target下的Use Microlib是否勾选,如果没有勾选,请勾选。祝君好运。