分享

转:STM32堆栈溢出导致硬件中断问题解决_笨小孩

 wwkfisker1 2016-01-21
转自:http://blog.163.com/wanghengzhi@126/blog/static/168853652201011171719625/
现在已经调通,把文件系统的各个操作也基本测试了一遍,代码还有待于整理。
首先要说一个问题,就是在写文件(f_write)的时候跳硬件中断的问题。堆栈不够,使用的开发板是奋斗v3.0,芯片是stm32f103vet6,有64K的ram,但是在startup_stm32f10x_hd.s的启动代码文件里对堆栈的定义却很小,不知道为什么,是因为别的硬件资源自己去分配么?现在还没有搞明白。下面有图为证:
转:STM32堆栈溢出导致硬件中断问题解决X

原来是512个字节,现在我把他修改成了2048个字节(2kb)。就可以使用了,在Fatfs操作过程中,他的每一个写操作的单位就是512字节,堆栈也是512字节,自然会溢出没得说,然后程序就会跳到硬件中断那里歇着去了。
另外一个问题,在写操作的时候程序会在SD卡的写操作上面死掉,现在还找到原因,需要仔细看下DMA和SDIO直接的访问情况。转:STM32堆栈溢出导致硬件中断问题解决
给注释掉就可以正常的写文件了。
2011年1月12日 11:40:54
下面写下我的理解和解决办法:
首先分析了下代码造成在上述地方程序死循环的不是下面的读操作而是写操作的f_close()函数。
在sdcard.c文件的开始定义了 volatile SD_Error TransferError =SD_OK;(即0x2A)
那么分析这句话的意思

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多