野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8797|回复: 8

SD卡读写还是不对 谁帮看看

[复制链接]
发表于 2016-3-30 14:02:49 | 显示全部楼层 |阅读模式
for ( i=0; i<512; i++ ) //填充缓冲
  {   
    Tx_Buffer =0xab;
   }   
    //        f_mount(fs[0],"0:",1);
           res = f_open(&fnew,"0:/newfile.txt2" , FA_CREATE_ALWAYS| FA_WRITE);

        if(res==FR_OK)
        {
                //res = f_lseek(file, f_size(file));
                res = f_write(&fnew, Tx_Buffer,512, &bw);
               delay_ms(500);
        }

        f_close(&fnew);        

          res = f_open(&fnew,"0:/newfile.txt2" ,FA_OPEN_EXISTING|FA_READ);

                res=f_read(&fnew,Rx_Buffer,512,&br);
                if(res)
                {
                        printf("Read Error:%d\r\n",res);
               
                }else
                {
               
                        for(t=0;t<br;t++)
                        {
                        printf("OX%04X ",Rx_Buffer[t]);
//                        printf("%02x ",Rx_Buffer[t]);
                        }
                }
           f_close(&fnew);
      f_mount(NULL,"0:",1);



为什么最后打印出来前255个字节是正确的,后边全为0了,我明明写进去的是516个字节的,为什么写不进去,或者读的不对呢?找不到原因了

回复

使用道具 举报

 楼主| 发表于 2016-3-30 14:04:10 | 显示全部楼层
并且代入本开发板例程  YTE textFileBuffer[] = "Welcome to use Wildfire iso stm32 Development Board today is a good day";
写入读取都是正确的  为什么我自己想往里面写数据然后读出来就不对呢
回复 支持 反对

使用道具 举报

发表于 2016-3-30 14:17:46 | 显示全部楼层
帮顶,爱莫能助,没搞过
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-3-30 14:23:32 | 显示全部楼层
开拖拉机的孩子 发表于 2016-3-30 14:17
帮顶,爱莫能助,没搞过

谢谢      
回复 支持 反对

使用道具 举报

发表于 2016-3-30 16:47:40 | 显示全部楼层
你的缓冲区是不是设置了256?????
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-3-31 09:19:42 | 显示全部楼层
chaoge131 发表于 2016-3-30 16:47
你的缓冲区是不是设置了256?????

uint16_t Rx_Buffer[512];       很奇怪的是  我将发送接收缓冲改为uint8_t Tx_Buffer[512];

uint8_t Rx_Buffer[512];

        for ( i=0; i<512; i++ ) //填充缓冲
  {   
    Tx_Buffer =i;
   }   


同理写入读出   读出的结果是前255个数为0至ff   而后256位也是从0到ff   为什么呢  ?当   发送接收缓冲都改为uint16_t,后256又缺都是0了  
回复 支持 反对

使用道具 举报

发表于 2016-3-31 11:55:37 | 显示全部楼层
xiaoniao 发表于 2016-3-31 09:19
uint16_t Rx_Buffer[512];       很奇怪的是  我将发送接收缓冲改为uint8_t Tx_Buffer[512];

uint8_t  ...

那就证明是数据定义问题。。
回复 支持 反对

使用道具 举报

发表于 2016-3-31 12:17:46 | 显示全部楼层
大哥,一个字节只能表示0-255
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-3-31 15:20:25 | 显示全部楼层
njzr 发表于 2016-3-31 12:17
大哥,一个字节只能表示0-255

小弟  我知道的。那我想把256写到SD卡中去,怎么办呢  不能直接f_read(&fnew,Rx_Buffer,512,&br);将值写进去吗   真的搞不明白了  求指教
回复 支持 反对

使用道具 举报

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

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-9-20 19:30 , Processed in 0.047442 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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