打印
[STM32F0]

求助程序进入void HardFault_Handler(void)

[复制链接]
4976|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
使用STM32F072RB的ADC进行9路数据采集,每个通道需要采集100个数据,将采集的数据通过DMA的方式存放在SRAM(16K)中,调试时发现如果将每个通道采集的数据量减少程序可以运行,但是设定在100时,程序就会进入void HardFault_Handler(void)中。由于是刚开始学习和使用,不知道如何处理,请知道的朋友不吝赐教,帮个忙,小弟在这里谢谢了!
沙发
mmuuss586| | 2014-9-27 17:14 | 只看该作者
硬件出错了;
你这16KRAM用的STM32内部还是外部的?

使用特权

评论回复
板凳
airwill| | 2014-9-27 20:38 | 只看该作者
如果数据少了就正常,很可能 ADC 结果的存储空间不足了。
你可以检查一下编译生成 .MAP 文件,看看内存分配情况。

使用特权

评论回复
地板
20140718|  楼主 | 2014-9-27 22:26 | 只看该作者
mmuuss586 发表于 2014-9-27 17:14
硬件出错了;
你这16KRAM用的STM32内部还是外部的?

使用的是内部的,但是采集的数据量少的话,无法满足使用要求,请问有什么好的解决方案,谢谢了。

使用特权

评论回复
5
diweo| | 2014-9-28 09:43 | 只看该作者
本帖最后由 diweo 于 2014-9-28 09:59 编辑

接调试器,等程序进入HardFault_Handler()后,查看函数调用关系,看HardFault_Handler前面一个函数是什么,重点分析这个函数。

下面的例子进入 HardFault_Handler()是因为func0里面调用了未经初始化的函数指针。

捕获.JPG (151.48 KB )

捕获.JPG

使用特权

评论回复
6
s_f_tan| | 2014-9-29 17:22 | 只看该作者
是不是DMA目标地址溢出了,操作到其他保留的地址上去了。map文件中检查下缓冲区地址+长度 超标了没有

使用特权

评论回复
7
song19881218| | 2014-9-29 17:32 | 只看该作者
一般情况就是数组溢出,重点检查一下数组,指针等等

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

10

帖子

0

粉丝