OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2968|回复: 1

SD卡中文件的读写

[复制链接]

17

主题

35

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1105
金钱
1105
注册时间
2015-10-13
在线时间
134 小时
发表于 2016-6-27 16:14:28 | 显示全部楼层 |阅读模式
SD卡读写流程:
        res = f_opendir(&exeplaydir,(const TCHAR*)txtDir);

        if(FR_OK == res)
        {                       
            LCD_ShowString(20,20,200,16,16,"OK");
        }
        f_exe=(FIL *)gui_memin_malloc(sizeof(FIL));                                //开辟FIL字节的内存区域
          exeplayinfo.lfsize=_MAX_LFN*2+1;                                                //长文件名最大长度
        exeplayinfo.lfname=mymalloc(exeplayinfo.lfsize);        //为长文件缓存区分配内存
        fname=mymalloc(exeplayinfo.lfsize);                                //为不带路径的文件名分配内存
        fname1=mymalloc(exeplayinfo.lfsize);
        while(f_exe==NULL||exeplayinfo.lfname==NULL||fname==NULL)//内存分配出错         ||exeplayindextbl==NULL
        {       
                LCD_ShowString(20,190,200,16,16,"FAIL!");                                  
        }
        res=f_readdir(&exeplaydir,&exeplayinfo);

        if(res==FR_OK)
        {               
        fn=(u8*)(*exeplayinfo.lfname?exeplayinfo.lfname:exeplayinfo.fname);                         
             strcpy((char*)fname,(const char*)fn);
        }
        strcpy((char*)fname1,(char*)txtDir);                                                          
        strcat((char*)fname1,"/");
        strcat((char*)fname1,(const TCHAR*)fname);
        res=f_open(f_exe,(const TCHAR*)fname1,FA_READ|FA_WRITE);
        if(FR_OK == res)                                                                                       
        {
                LCD_ShowString(20,40,200,16,16,"OK");
        }
                          
        gui_memset(membase,0,f_exe->fsize);        //清空这片内存
        res=f_read(f_exe, membase, f_exe->fsize, (UINT*)&br);       
        LCD_ShowNum(172,250,res,5,16);                   //——————————(此处返回0)
        LCD_ShowNum(172,270,f_exe->fsize,5,16);
        f_lseek(f_exe, f_exe->fsize); //指针移到文件最后
        res = f_write(f_exe, fbuf,10, (UINT*)&br);      //——————————(此处返回0)



f_write返回的值是0,我写的fbuf[10]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09},为什么打开SD卡中对应的.txt文件中什么都没有?求大神指点迷津~~
逻辑和语言都很重要~~~
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

117

主题

598

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
1702
金钱
1702
注册时间
2012-5-10
在线时间
439 小时
发表于 2016-6-27 16:34:21 | 显示全部楼层
你用winhex打开就有了,很神奇
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-10 16:45

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表