[STM32F0] 求助程序进入void HardFault_Handler(void)

[复制链接]
5339|6
 楼主| 20140718 发表于 2014-9-27 16:10 | 显示全部楼层 |阅读模式
使用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内部还是外部的?

使用的是内部的,但是采集的数据量少的话,无法满足使用要求,请问有什么好的解决方案,谢谢了。
diweo 发表于 2014-9-28 09:43 | 显示全部楼层
本帖最后由 diweo 于 2014-9-28 09:59 编辑

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

下面的例子进入 HardFault_Handler()是因为func0里面调用了未经初始化的函数指针。
捕获.JPG
s_f_tan 发表于 2014-9-29 17:22 | 显示全部楼层
是不是DMA目标地址溢出了,操作到其他保留的地址上去了。map文件中检查下缓冲区地址+长度 超标了没有
song19881218 发表于 2014-9-29 17:32 | 显示全部楼层
一般情况就是数组溢出,重点检查一下数组,指针等等
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

10

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部