OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5204|回复: 7

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

[复制链接]

24

主题

60

帖子

0

精华

初级会员

Rank: 2

积分
186
金钱
186
注册时间
2012-12-19
在线时间
3 小时
发表于 2013-2-21 11:38:30 | 显示全部楼层 |阅读模式
  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函数 

不是一模一样的代码吗?
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

36

主题

1263

帖子

1

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1612
金钱
1612
注册时间
2012-6-15
在线时间
39 小时
发表于 2013-2-21 13:44:45 | 显示全部楼层
你将堆栈 设置大一些再试试呢?
回复 支持 反对

使用道具 举报

24

主题

60

帖子

0

精华

初级会员

Rank: 2

积分
186
金钱
186
注册时间
2012-12-19
在线时间
3 小时
 楼主| 发表于 2013-2-21 14:16:26 | 显示全部楼层
回复【2楼】aleda303:
---------------------------------
堆栈怎么设大
回复 支持 反对

使用道具 举报

36

主题

1263

帖子

1

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1612
金钱
1612
注册时间
2012-6-15
在线时间
39 小时
发表于 2013-2-21 14:55:16 | 显示全部楼层
在启动文件里面设置。

就在那个 汇编 文件   startup_stm32xxxx.s 那个里面

文本框下面 有提示 Configuration Wizard , 然后就看见 Stack Configuration 和 Heap Configuration  

默认是0x0200
你设置0x0400再试下



回复 支持 反对

使用道具 举报

36

主题

1263

帖子

1

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1612
金钱
1612
注册时间
2012-6-15
在线时间
39 小时
发表于 2013-2-21 14:56:11 | 显示全部楼层
进入这个 HardFault_Handler 一般是访问越界或溢出

一个可能原因就是 堆栈太小。 
还有就是程序访问
回复 支持 反对

使用道具 举报

24

主题

60

帖子

0

精华

初级会员

Rank: 2

积分
186
金钱
186
注册时间
2012-12-19
在线时间
3 小时
 楼主| 发表于 2013-2-22 09:46:16 | 显示全部楼层
回复【4楼】aleda303:
---------------------------------
是不是就是把

Stack_Size      EQU     0x00000400

                AREA    STACK, NOINIT, READWRITE, ALIGN=3
Stack_Mem       SPACE   Stack_Size
__initial_sp
                                                  
; <h> Heap Configuration
;   <o>  Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
; </h>

Heap_Size       EQU     0x00000200

                AREA    HEAP, NOINIT, READWRITE, ALIGN=3
__heap_base
Heap_Mem        SPACE   Heap_Size
__heap_limit


Heap_Size这里的值改成0x400
回复 支持 反对

使用道具 举报

36

主题

1263

帖子

1

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1612
金钱
1612
注册时间
2012-6-15
在线时间
39 小时
发表于 2013-2-22 11:53:42 | 显示全部楼层
对 你试下。
回复 支持 反对

使用道具 举报

24

主题

60

帖子

0

精华

初级会员

Rank: 2

积分
186
金钱
186
注册时间
2012-12-19
在线时间
3 小时
 楼主| 发表于 2013-2-24 20:52:44 | 显示全部楼层
不是这个原因
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-22 12:12

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表