OpenEdv-开源电子网

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

运行程序进入"HardFault Handler。。。"的死循环中,怎么解决???

[复制链接]

13

主题

43

帖子

0

精华

初级会员

Rank: 2

积分
134
金钱
134
注册时间
2013-11-18
在线时间
4 小时
发表于 2014-7-31 15:23:01 | 显示全部楼层 |阅读模式
5金钱
自己写了一个实数输入的FFT程序,仿真时,程序一直在HardFault Handler里面循环,不知道是什么情况,网上说是可能是数据溢出,但怎么看数据哪里溢出啊???各位大神帮忙解答下呗,感激不尽!!!
下面是定义的全局变量:
typedef struct           //定义复数结构

 float real; 
 float img; 
}complex; 
extern complex x[,129];               //存放重新组合后的序列  
extern complex W[128];                 //存放旋转因子
 
下面是主函数里的局部变量:
u8 i=0,j=0,k=0,l=0,p=0;
complex A[256];       
complex temp;
complex temp1;

程序是在运行下面程序段的时候进入异常的:

for(k=j;k<N2-1;k=k+(1<<i))  //每个蝶形的计算

temp=x[k];
x[k]=add(x[k],x[k+l]);
x[k+l]=sub(temp,x[k+l]);
x[k+l]=mul(x[k+l],W[p]);

k运行到27的时候就进入异常,这时l=64,没有超出数组范围啊。。。。。。

最佳答案

查看完整内容[请看2#楼]

回复【7楼】fangxinla: --------------------------------- 局部变量不能超过堆栈大小。。。 所以如果数据比较大。。。都要用全局的
http://chenxuexia.taobao.com/shop/view_shop.htm?spm=a1z0e.1.0.0.bXH3cY&mytmenu=mdianpu&utkn=g,nzqws53pnbstinztgi2tk1401605753588&user_number_id=223376791&scm=1028.1.1.20001&v=1
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

230

主题

1950

帖子

10

精华

论坛元老

Rank: 8Rank: 8

积分
4562
金钱
4562
注册时间
2010-12-14
在线时间
32 小时
发表于 2014-7-31 15:23:02 | 显示全部楼层
回复【7楼】fangxinla:
---------------------------------
局部变量不能超过堆栈大小。。。
所以如果数据比较大。。。都要用全局的
我是开源电子网?网站管理员,对网站有任何问题,请与我联系!QQ:389063473Email:389063473@qq.com
回复

使用道具 举报

230

主题

1950

帖子

10

精华

论坛元老

Rank: 8Rank: 8

积分
4562
金钱
4562
注册时间
2010-12-14
在线时间
32 小时
发表于 2014-7-31 20:50:39 | 显示全部楼层
那个时候i是多少
我是开源电子网?网站管理员,对网站有任何问题,请与我联系!QQ:389063473Email:389063473@qq.com
回复

使用道具 举报

13

主题

43

帖子

0

精华

初级会员

Rank: 2

积分
134
金钱
134
注册时间
2013-11-18
在线时间
4 小时
 楼主| 发表于 2014-8-1 07:54:43 | 显示全部楼层
回复【2楼】Admin:
---------------------------------
i+8
http://chenxuexia.taobao.com/shop/view_shop.htm?spm=a1z0e.1.0.0.bXH3cY&mytmenu=mdianpu&utkn=g,nzqws53pnbstinztgi2tk1401605753588&user_number_id=223376791&scm=1028.1.1.20001&v=1
回复

使用道具 举报

13

主题

43

帖子

0

精华

初级会员

Rank: 2

积分
134
金钱
134
注册时间
2013-11-18
在线时间
4 小时
 楼主| 发表于 2014-8-1 07:55:21 | 显示全部楼层
那时的 i=8
http://chenxuexia.taobao.com/shop/view_shop.htm?spm=a1z0e.1.0.0.bXH3cY&mytmenu=mdianpu&utkn=g,nzqws53pnbstinztgi2tk1401605753588&user_number_id=223376791&scm=1028.1.1.20001&v=1
回复

使用道具 举报

4

主题

200

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
236
金钱
236
注册时间
2012-12-19
在线时间
0 小时
发表于 2014-8-1 08:15:38 | 显示全部楼层
你可以调用汇编读出状态寄存器,看看具体是什么错误。参见CORTEX-M手册
目前在玩STM32,BBB,RPi
回复

使用道具 举报

230

主题

1950

帖子

10

精华

论坛元老

Rank: 8Rank: 8

积分
4562
金钱
4562
注册时间
2010-12-14
在线时间
32 小时
发表于 2014-8-1 11:12:26 | 显示全部楼层
回复【4楼】fangxinla:
---------------------------------
i=8         那么1<<8= ?
k也是u8...
你看看这里会不会有问题
我是开源电子网?网站管理员,对网站有任何问题,请与我联系!QQ:389063473Email:389063473@qq.com
回复

使用道具 举报

13

主题

43

帖子

0

精华

初级会员

Rank: 2

积分
134
金钱
134
注册时间
2013-11-18
在线时间
4 小时
 楼主| 发表于 2014-8-1 13:51:21 | 显示全部楼层
回复【6楼】Admin:
---------------------------------
我后面有把u8改成u16还是不行,今天我把局部变量A[]改成全局变量就可以了,感觉应该和堆栈或者内存分配有关系?
http://chenxuexia.taobao.com/shop/view_shop.htm?spm=a1z0e.1.0.0.bXH3cY&mytmenu=mdianpu&utkn=g,nzqws53pnbstinztgi2tk1401605753588&user_number_id=223376791&scm=1028.1.1.20001&v=1
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-4 12:09

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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