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所致。