打印
[技术问答]

f_open打开u盘文件错误,程序死在Hard_Fault_Handler里

[复制链接]
4028|28
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lijiankun|  楼主 | 2015-5-5 17:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 lijiankun 于 2015-5-8 11:31 编辑

  最近使用软件打开u盘中的文件,在f_open处总是返回FR_DISK_ERR 错误,或者代码直接就死在Hard_Fault_Handler(uint32_t stack[])这个函数里了,这是怎么回事呀?大家有遇到过类似的问题吗?求指点,谢谢大家了
沙发
gaoyang9992006| | 2015-5-5 18:01 | 只看该作者
你是在电脑上插入优盘打开的吗

使用特权

评论回复
板凳
lijiankun|  楼主 | 2015-5-6 09:31 | 只看该作者
gaoyang9992006 发表于 2015-5-5 18:01
你是在电脑上插入优盘打开的吗

不是,是用单片机编写代码打开的,用电脑打开是正常的

使用特权

评论回复
地板
quray1985| | 2015-5-6 12:28 | 只看该作者
可能是你的U盘存储空间太大了,而你的代码又不支持
我开始写USB的时候,最大只能支持512M

使用特权

评论回复
5
tcchiu1| | 2015-5-7 08:09 | 只看该作者
设定的stack可能太小了,导致stack爆掉了。

使用特权

评论回复
6
gaoyang9992006| | 2015-5-7 11:25 | 只看该作者
楼上说的有这种可能,堆栈空间不够,或者是楼主打开方式不对,我肯定不会说楼主人品问题导致的,因为这种说法太荒谬了。

使用特权

评论回复
7
mintspring| | 2015-5-7 14:05 | 只看该作者
应该就是上面高手说的那种问题了,搞大点试试。

使用特权

评论回复
8
lijiankun|  楼主 | 2015-5-7 15:36 | 只看该作者
tcchiu1 发表于 2015-5-7 08:09
设定的stack可能太小了,导致stack爆掉了。

试过了,好像不是这个原因。我用        p=malloc(64);在f_open哪里试过了,可以申请成功空间。本来我以为是工程被我给玩坏了,就重新换了一个工程,还是不行

使用特权

评论回复
9
mintspring| | 2015-5-7 16:02 | 只看该作者
你把全部信息和资料传上来,让大家看看怎么弄的,你现在说的不知道在什么平台下,什么库函数里面做的啊。都是瞎猜。

使用特权

评论回复
10
598330983| | 2015-5-8 09:12 | 只看该作者
代码操作的失败,一般是函数调用出了问题,可能少了什么环节。

使用特权

评论回复
11
lijiankun|  楼主 | 2015-5-8 10:30 | 只看该作者
本帖最后由 lijiankun 于 2015-5-11 11:33 编辑
mintspring 发表于 2015-5-7 16:02
你把全部信息和资料传上来,让大家看看怎么弄的,你现在说的不知道在什么平台下,什么库函数里面做的啊。都 ...

谢谢大家给我的回答,问题找到了。
我用的是新唐M453VG6AE的平台,新唐的代码要直接使用printf打印数据,必须首先要将printf函数和串口进行挂接,我的程序中大量的使用了printf进行数据的打印,初始化定义的是串口1,由于疏忽挂接的时候,挂接到串口0上了,所以导致的内存访问错乱,致使程序跳转到Hard_Fault_Handler。
把挂接改过来之后就好了,问题解决了。

使用特权

评论回复
12
lijiankun|  楼主 | 2015-5-8 10:30 | 只看该作者
598330983 发表于 2015-5-8 09:12
代码操作的失败,一般是函数调用出了问题,可能少了什么环节。

恩,谢谢你的回答,问题找到了

使用特权

评论回复
13
598330983| | 2015-5-8 10:52 | 只看该作者
lijiankun 发表于 2015-5-8 10:30
恩,谢谢你的回答,问题找到了

你这个是什么问题啊,大家都想知道吧

使用特权

评论回复
14
lijiankun|  楼主 | 2015-5-8 11:20 | 只看该作者
本帖最后由 lijiankun 于 2015-5-11 11:33 编辑
598330983 发表于 2015-5-8 10:52
你这个是什么问题啊,大家都想知道吧

我用的是新唐M453VG6AE的平台,新唐的代码要直接使用printf打印数据,必须首先要将printf函数和串口进行挂接,我的程序中大量的使用了printf进行数据的打印,初始化定义的是串口1,由于疏忽挂接的时候,挂接到串口0上了(新唐的例程默认是在串口0上挂接的),所以导致的内存访问错乱,致使程序跳转到Hard_Fault_Handler。
把挂接改过来之后就好了,问题解决了

使用特权

评论回复
15
598330983| | 2015-5-8 11:28 | 只看该作者
lijiankun 发表于 2015-5-8 11:20
我用的是新唐M451VG6AE的平台,新唐的代码要直接使用printf打印数据,必须首先要将printf函数和串口进行 ...

原来这样,涨姿势了,谢谢楼主耐心讲解。

使用特权

评论回复
16
lijiankun|  楼主 | 2015-5-8 11:32 | 只看该作者
598330983 发表于 2015-5-8 11:28
原来这样,涨姿势了,谢谢楼主耐心讲解。

不客气,大家相互学习,一起进步

使用特权

评论回复
17
mintspring| | 2015-5-8 12:51 | 只看该作者
lijiankun 发表于 2015-5-8 10:30
谢谢大家给我的回答,问题找到了。
我用的是新唐M451VG6AE的平台,新唐的代码要直接使用printf打印数据 ...

搜嘎,懂了,原来是这种问题。以后我也要注意点。

使用特权

评论回复
18
734774645| | 2015-5-10 07:47 | 只看该作者
串口没有匹配对,所以错误

使用特权

评论回复
19
lijiankun|  楼主 | 2015-5-11 11:35 | 只看该作者
734774645 发表于 2015-5-10 07:47
串口没有匹配对,所以错误

可以这样理解

使用特权

评论回复
20
ccw1986| | 2015-5-12 10:25 | 只看该作者
mintspring 发表于 2015-5-8 12:51
搜嘎,懂了,原来是这种问题。以后我也要注意点。

我也是懂了,新唐需要直接用printf打印数据

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

17

主题

94

帖子

3

粉丝