我发现网上大部分的例程都是在"sdcard.c"中直接/*ConfigurePC.08,PC.09,PC.10,PC.11,PC.12pin:D0,D1,D2,D3,CLKpin*/GPIO_InitStructure.GPIO_Pin=GPIO_Pin_8|GPIO_Pin_12;GPIO_InitSt...
我发现网上大部分的例程都是在"sdcard.c"中直接 /* Configure PC.08, PC.09, PC.10, PC.11, PC.12 pin: D0, D1, D2, D3, CLK pin */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_12;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_Init(GPIOC, &GPIO_InitStructure);
/* Configure PD.02 CMD line */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;
GPIO_Init(GPIOD, &GPIO_InitStructure);
问题是,我可以更改它的引脚吗?我找不到他们与SD卡的联系!
问题二:f_read()中,发现只能读取到该文件的前512个字节,然后就读不下去了(我设置char buf[512];)。有时候遇到读几个MB时,没那么大的内容怎么办,为什么不会借着往下读。换下一个簇读写,应该可以的,我看SD读写是可以的。我用f_lseek(),发现更改指针不行啊!
我想到了一种比较笨的方法!但是能连续地读内容来,希望跟我有一样疑问的人,有个参考!
for(i=0;i<20;i++)
{
result = f_mount(0, &fs);
result = f_opendir(&DirInf, "/");
result = f_open(&file, "123.txt", FA_OPEN_EXISTING | FA_READ);
result = f_lseek(&file,i*512);
result = f_read(&file, &buf, sizeof(buf) - 1, &bw);
printf("\r\narmfly.txt content : \r\n%s\r\n", buf);
f_close(&file);
f_mount(0, NULL);
}
展开