您的位置 首页 5G

SDIO_FATFS_MDK 调试记载

现在已经调通,把文件系统的各个操作也基本测试了一遍,代码还有待于整理。首先要说一个问题,就是在写文件(f_write)的时候跳硬件中断的…

现在现已调通,把文件体系的各个操作也根本测试了一遍,代码还有待于收拾。


首要要说一个问题,便是在写文件(f_write)的时分跳硬件中止的问题。仓库不行,运用的开发板是斗争v3.0,芯片是stm32f103vet6,有64K的ram,但是在startup_stm32f10x_hd.s的发动代码文件里对仓库的界说却很小,不知道为什么,是因为其他硬件资源自己去分配么?现在还没有搞了解。下面有图为证:

原来是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)
那么剖析这句话的意思
while ((TransferEnd == 0) && (TransferError == SD_OK))
{}
当传输完毕而且没有过错的时分进入死循环?!说不通啊,但是在IAR的编译器里就能够运转,现在要查找从界说到死循环之间有没有什么操作能够改动这两个变量的值。开始看没有什么会改变的状况,要对照IAR的仿真运转一同看。

问题现已处理,要谢谢网友stm32!
要在stm32f10x_it.c里把SDIO的中止服务函数加上,
/*******************************************************************************
* Function Name : SDIO_IRQHandler
* Description : This function handles SDIO global interrupt request.
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void SDIO_IRQHandler(void)
{
SD_ProcessIRQSrc();
}
然后就ok了。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/yingyong/5g/252229.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部