转自:http://blog.163.com/wanghengzhi@126/blog/static/168853652201011171719625/ 现在已经调通,把文件系统的各个操作也基本测试了一遍,代码还有待于整理。 首先要说一个问题,就是在写文件(f_write)的时候跳硬件中断的问题。堆栈不够,使用的开发板是奋斗v3.0,芯片是stm32f103vet6,有64K的ram,但是在startup_stm32f10x_hd.s的启动代码文件里对堆栈的定义却很小,不知道为什么,是因为别的硬件资源自己去分配么?现在还没有搞明白。下面有图为证: X 原来是512个字节,现在我把他修改成了2048个字节(2kb)。就可以使用了,在Fatfs操作过程中,他的每一个写操作的单位就是512字节,堆栈也是512字节,自然会溢出没得说,然后程序就会跳到硬件中断那里歇着去了。 另外一个问题,在写操作的时候程序会在SD卡的写操作上面死掉,现在还找到原因,需要仔细看下DMA和SDIO直接的访问情况。 给注释掉就可以正常的写文件了。 2011年1月12日 11:40:54 下面写下我的理解和解决办法: 首先分析了下代码造成在上述地方程序死循环的不是下面的读操作而是写操作的f_close()函数。 在sdcard.c文件的开始定义了 volatile SD_Error TransferError =SD_OK;(即0x2A) 那么分析这句话的意思 |
|
来自: wwkfisker1 > 《待分类》