本帖最后由 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所示:
但还是找不出问题出在哪里。
先将程序附件呈上,希望有机会讨论一下,先谢过!
此帖出自
小平头技术问答
非常感谢版主的提醒,问题解决了。
方法:修改启动文件startup f10x_hs.d中堆栈段的大小改大点,如下图所示。
一周热门 更多>