STM32+nand flash调试程序进入HardFault_Handler()

2019-03-23 18:12发布

本帖最后由 qiwan 于 2015-3-10 19:59 编辑

调试STM32读写nand flash K9F1G08U0D的程序,程序实现的功能是对nand flash的第一块的前两页
写数据,且从第一页的第一个字节地址开始写,写完之后,对两页的数据进行读取,若读取得到的
数据之前写入的数据一致,则执行其他操作。

通过函数 FSMC_NAND_WriteSmallPage(TxBuffer, WriteReadAddr, PageNumber)对nand flash写;
然后通过函数FSMC_NAND_ReadSmallPage (RxBuffer, WriteReadAddr, PageNumber)对之前写的两页
进行读。
调试中发现,当程序执行到语句:
status = FSMC_NAND_ReadSmallPage (RxBuffer, WriteReadAddr, PageNumber);
时,便会进入到HardFault_Handler()函数中,不断地执行while(1)中的空语句。
如图1和12所示。



通过网上提供的“解决stm32进入HardFault_Handler的定位方法,将错误定位到了语句:

status = FSMC_NAND_ReadStatus();

如图123所示:



但还是找不出问题出在哪里。

先将程序附件呈上,希望有机会讨论一下,先谢过!



此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
qiwan
1楼-- · 2019-03-24 03:31
 精彩回答 2  元偷偷看……
zhaojun_xf
2楼-- · 2019-03-24 09:02
重新设置一下堆栈空间看看。
qiwan
3楼-- · 2019-03-24 13:33
zhaojun_xf 发表于 2015-3-11 10:06
重新设置一下堆栈空间看看。

非常感谢版主的提醒,问题解决了。
方法:修改启动文件startup f10x_hs.d中堆栈段的大小改大点,如下图所示。


qiwan
4楼-- · 2019-03-24 18:30
 精彩回答 2  元偷偷看……
ddllxxrr
5楼-- · 2019-03-24 21:09
学习啦
zhaojun_xf
6楼-- · 2019-03-24 23:55
这种问题很多人遇到,设置为精华,方便大家借鉴。。。。

一周热门 更多>