我SD卡用的是 16G 写入程序如下 FRESULT fr; //读文件返回值 FIL fsrc,fdst; //创建文件 FATFS fs; // UINT br,bw; //读写计数 FILINFO finfo; DIR dir; char buffer[512]; //从文件中读出数据BUFF const BYTE textFileBuffer[]="123456"; int main(void) { bsp_init();//串口初始化 while(SD_Init()) { printf("error\r\n"); } //SD卡初始化 fr=f_mount(&fs,"0:",1);//创建工作区 fr=f_open(&fdst,"0:/456.txt",FA_CREATE_NEW|FA_WRITE);//建立一个TXT文件 if(fr==FR_OK) { fr=f_write(&fdst,textFileBuffer,sizeof(textFileBuffer)-1,&bw);//往文件写入123456 } else if (fr==FR_EXIST) { printf("1"); } fr=f_close(&fdst);//关闭文件 fr=f_open(&fdst,"0:/456.txt",FA_READ);//以只读的方式打开文件 单步运行时前面fr的返回值都时FR_OK ,运行完这步FR=FR_NO_file(0x04) br=1;//¶Á¼ÆÊý while(1) { fr=f_read(&fdst,buffer,sizeof(buffer),&br); if(fr||br==0)break; } f_close(&fdst); while (1) { } } 把SD卡插入电脑 提示文件目录损坏无法读取 不知道是哪里出问题了? |
/* WARNING: Formatting the uSD card will delete all content on the device */
if(f_mkfs((TCHAR const*)SDPath, FM_ANY, 0, buffer, sizeof(buffer)) != FR_OK)
这个呢?
评分
查看全部评分
我在创建工作区之后运行这个格式化命令f_mkfs("0:",FM_ANY,0,buffer,sizeof(buffer)) ,也就是新的SD卡首次创建文件时必须有这条语句才行?我看网上其他人的例程都没有这条语句
评分
查看全部评分
我mount write 返回值都是OK read时找不到文件 插电脑上提示文件系统损坏 也不知道怎么回事
我创建了工作区,在工作区创建txt文件 返回值都是OK 插电脑上看不到创建的文件 提示文件损坏,不知道什么原因
if _USE_WRITE
DRESULT disk_write (
BYTE pdrv, /* Physical drive nmuber to identify the drive */
const BYTE *buff, /* Data to be written */
DWORD sector, /* Start sector in LBA */
UINT count /* Number of sectors to write */
)
{
u8 res=0;
if (!count)return RES_PARERR;
switch (pdrv)
{
case SD_CARD :
res=SD_WriteDisk((u8*)buff,sector,count); //本应该这样
// res=SD_WriteDisk((u8*)buf,sector,count); //错误写成这样,软件没有报错 是因为我在调试的时候在前面定义过一个buf【512】数组
while(res)
{
SD_Init();
res=SD_WriteDisk((u8*)buff,sector,count);
}
break;
default:
res=1;
}
if(res==0x00) return RES_OK;
else return RES_ERROR;
}
#endif
评分
查看全部评分