本帖最后由 jshzp 于 2019-6-17 17:14 编辑
使用阿波罗开发板,f429芯片,读取U盘上文件“test0.bin”:
[mw_shl_code=c,true] UCHAR buffer[3149];
res=f_open(fsrc,"3:/test0.bin", FA_OPEN_EXISTING | FA_READ);
res=f_read(fsrc,buffer,sizeof(buffer),&br);[/mw_shl_code]
执行上述代码中的f_open()函数时死机,经查找原因,该函数内调用
[mw_shl_code=c,true]res=USBH_MSC_Read10(&USB_OTG_Core,buf,sector,512*cnt);[/mw_shl_code]
时始终返回USBH_MSC_BUSY,结果导致进入死循环的。
进一步检查发现,如果buffer长度不超过3148时,就可以正常读出,超过后就会出现上述现象。另外,test0.bin文件长度约30KB,远大于buffer长度。
继续调试发现,如果改成下面的代码:
[mw_shl_code=c,true]UCHAR buffer0[3149],buffer[3149];
res=f_open(fsrc,"3:/DF8B.txt", FA_OPEN_EXISTING | FA_READ);
res=f_read(fsrc,buffer,sizeof(buffer),&br);
res=f_read(fsrc,buffer0,sizeof(buffer0),&br);//运行到这里死机[/mw_shl_code]
则可以正常运行,到第二次f_read()时死机。似乎这个问题和开数组有关系,网上有人说这个现象可能和编译器版本相关,我使用的是mdk514。求高手指教,非常感谢!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
改成全局变量就没问题了,谢谢!
一周热门 更多>