小白关于keil4调试仿真的几个问题:一直停在systeminit中的do,while;程序一直停在启动文件中的BX R0;void HardFault_Handler(void),

分享学习,共同成长:这几个问题都是新手比较头痛的,新手在出现HardFault时,可能不是因为内存溢出,访问越界或是堆栈溢出,有可能仅仅只是自己一些最基本的规则没弄清楚而导致,所以分享下自己一些小问题,让新手朋友们出现类似问题可以借鉴下;

1    调试时程序一直停在SystemIit()中的等待晶振中

是DEBUG里面的设置有问题,调用的DLL错误,在Dialogue DLL中填DARMSTM.DLL, Parameter 填-pSTM32F103VC  仿真stm的那一款就对应填那个参数,这是仿真STM32的动态链接,具体为什么这样还等大虾来解决;
2  仿真时,程序一直进不了_mian,停在BX R0,如图


解决办法:需要使用keil4自带微库MIrcroLIB,配置勾选如下图


3  新手仿真时出现hardfault,
void HardFault_Handler(void)
{
  /* Go to infinite loop when Hard Fault exception occurs */
  while (1)
  {
  }

新手可能在网上看到解释内存溢出,访问出界,堆栈溢出,所以可能瞬间感觉要崩溃了,新手一般都是简单的程序,所以可能不会出现很复杂的问题,可能仅仅是因为自己大意或是对C语言不熟悉等造成


两个函数造成的hardfault有异曲同工之妙,都是因为程序运行到尽头导致的hardfualt,第一个函数因为return会结束函数,并不会执行接下来的while,所以导致出错;第二个函数函数main执行完以后就没程序可以执行了,直接导致硬件中断;

所有关于option的修改都需要把程序重新编译方可生效,有时候都配置好了也会出现其他问题,如果遇到一直解决不了的,建议最好重新建立工程试试看;

以上纯属新手学习的交流,还望高手多多指点;



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章