背景:移植原子哥的第四十五章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);
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
---------------------------------
原子哥,昨天晚上调试了一晚上,已经解决问题了!谢谢您的回复!
一周热门 更多>