FATFS系统无法读取文件!

2019-07-21 07:03发布

背景:移植原子哥的第四十五章FATFS实验(http://www.openedv.com/posts/list/13846.htm)代码到我自己的单片机上。
1、能够正常读取并打印出逻辑0扇区的值。但是原子哥的代码是读取0扇区,我的代码必须读128扇区才能正确读取到"EB 58 90 4D 53"等值。代码如下
if(SD_ReadDisk(buf,128,1)==0) //读取0扇区的内容

printf(" Sending Data... ");
printf("SECTOR 0 DATA: ");
for(sd_size=0;sd_size<512;sd_size++)printf("%x ",buf[sd_size]);//打印0扇区数据       
printf(" DATA ENDED ");
printf(" Send Data Over! ");
}   
2、能够读取SD卡总容量和SD卡真实容量和已使用值比对后相符。

问题:不能够打开或者创建文件。若打开或者创建文件,进入硬中断。主函数代码如下:请各位大大给指个方向,谢谢了!
void main()
FIL fnew; /* file objects */
FATFS fs; /* Work area (file system object) for logical drives */
FRESULT res; 
UINT br, bw;             /* File R/W count */
BYTE buffer[2] = {0};        /* file copy buffer */
BYTE textFileBuffer[] = "kevin";
uint32_t total;
uint32_t free;

while(SD_Initialize()) //检测SD卡
{
printf(" SD Card Error! ");
}
printf(" SD Card OK! ");

//disk_initialize(0);
f_mount(0,&fs);

   res = f_open(&fnew, "0:/file.txt", FA_OPEN_EXISTING | FA_READ |FA_WRITE);
   res = f_read(&fnew, buffer, sizeof(buffer), &br); 

printf(" %s ", buffer);

/* Close open files */
f_close(&fnew);                                      
 
    /* Unregister work area prior to discard it */
    f_mount(0, NULL);
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
活出自我
1楼-- · 2019-07-21 09:43
回复【2楼】正点原子:
---------------------------------
原子哥,昨天晚上调试了一晚上,已经解决问题了!谢谢您的回复!
正点原子
2楼-- · 2019-07-21 13:54
你的0扇区,是什么数据?截图看下。
wuyangisbest
3楼-- · 2019-07-21 16:17
CHENJINFA
4楼-- · 2019-07-21 19:19
 精彩回答 2  元偷偷看……
CHENJINFA
5楼-- · 2019-07-21 19:54
你好,请问你怎么解决的啊,我的也是进入HardFault_Handler了

一周热门 更多>