当前位置: 代码迷 >> 单片机 >> stm32中 调试完全相像的代码执行其中一个没事,另一个却进入HardFault_Handler
  详细解决方案

stm32中 调试完全相像的代码执行其中一个没事,另一个却进入HardFault_Handler

热度:41   发布时间:2016-04-28 15:30:02.0
stm32中 调试完全相似的代码执行其中一个没事,另一个却进入HardFault_Handler
 typedef struct 
  {
   u8 i,doti,oper,dotflag,esflag,num;//doti代表的是小数点序列,输入数字位数标志位和fnum,snum获取序列号,dotaflag是有无输入点的符号标志 
   float fnum,snum,result,dnum; //dnum代表的是需要显示的数字的值
   u8 number[7];
   u8 dotnumber[7];    //这些东西全部用结构体通过指针调用来实现  
  }Cal_Struct;
  
  //  Cal->FSM=0; //0为初始态,1为输入第一个运算数;2为可以输入第二个运算数,3为需要运算符号态,4为输出结果状态
 int main(void)
 {
  
  Cal_Struct * Cal;
 // Cal->dotflag=1;
  Cal->fnum=0;
  Cal->snum=0;
  Cal->result=0;
  Cal->num=16;


……


为什么在调试的时候运行Cal->fnum=0;的时候可以运行而运行Cal->snum=0;的时候发现进入了HardFault_Handler函数 

不是一模一样的代码吗?

什么原因有人清楚吗??

------解决方案--------------------
仔细看看你的指针操作,有没有写入不该写的地址。包括初始化的时机,确定先初始化后使用。我几乎每次进到hard fault里面都是因为指针写入了错误地址。几乎都是bug所致。