调试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)中的空语句。
通过网上提供的“解决stm32进入HardFault_Handler()的定位方法“,将问题定位在
FSMC_NAND_ReadStatus()函数上。
程序进入HardFault_Handler(),通常是由于堆栈溢出或数组过节或指针指飞;
虽然FSMC_NAND_ReadStatus()函数中有指针,但我并不认为指针指飞了,所以
现在还不知道原因出在哪里。
有遇到过此类问题的坛友吗?先将程序呈上,希望有机会交流学习一下,先谢过~
|