K210入门-裸机开发(八点半)文件系统补充

开发板:K210 AIRV R3版 widora

开发环境:kendryte IDE 官方的

必须的参考文档:Standalone SDK编程指南v0.5.0,以及widora的原理图

(一)这集试试文件系统打开自己的文件

先读a.txt 并获取 里面的长度 v_fileinfo.fsize

然后把读到的内容打印出来

下面的代码先注释掉 单独测试这个 

一条龙走起

报错了 v_fileinfo.fsize 初始化不了 我又不想用mem分配 就不管了 就用固定常量128(建议用动态分配内存 我这边不会 所以用固定的)

效果  不错,都读出来了

继续读下一个文档

这边就直接读了 不获取信息了

串口打印不出来, 证明识别不了中文, 我现在暂时不知道怎么解决不能识别中文的 

所以不能使用中文

(二) 那么下面就来测试下读取mp3

也是读到的,但是读出来的内容就不知道对不对了

下面对a.txt写东西(直接写 不读,等下去读卡器读)

这次不错, 写中文居然可以

把文件名都改全英文

下面读图片 

读不到内容, 原因应该是获取的是8位的,但图片不是8位而是32位 所以不行

刚去学了一波动态内存 calloc,用完记得free释放数组

文件系统学习完毕 下次再见

总结下

创建文件夹

  char *dir = "jwdeng1995";
  ret = f_mkdir(dir);

获取文件大小(FILINFO 里面还能显示其他信息的 ,这里只用了.fsize)

  char *path = "jwdeng1995/test.txt";
  printf("/*******************sd read write test*******************/\n");
  uint32_t v_ret_len = 0;

  FILINFO v_fileinfo;
  if ((ret = f_stat(path, &v_fileinfo)) == FR_OK) {
    printf("%s length is %lld\n", path, v_fileinfo.fsize);
  } else {
    printf("%s fstat err [%d]\n", path, ret);
  }

打开文档并输出内容


  if ((ret = f_open(&file, path, FA_READ)) == FR_OK) {
    char v_buf[128] = {0};
    ret = f_read(&file, (void *)v_buf, 128, &v_ret_len);
    if (ret != FR_OK) {
      printf("Read %s err[%d]\n", path, ret);
    } else {
      printf("Read :> %s %d bytes lenth\n", v_buf, v_ret_len);
    }
    f_close(&file);
  }

 写文档

  if ((ret = f_open(&file, path, FA_CREATE_ALWAYS | FA_WRITE)) != FR_OK) {
    printf("open file %s err[%d]\n", path, ret);
    return ret;
  } else {
    printf("Open %s ok\n", path);
  }
  uint8_t hello[1024]= "阿斯打扫打扫打扫打扫打扫";
  ret = f_write(&file, hello, sizeof(hello), &v_ret_len);
  if (ret != FR_OK) {
    printf("Write %s err[%d]\n", path, ret);
  } else {
    printf("Write %d bytes to %s ok\n", v_ret_len, path);
  }
  f_close(&file);

动态内存分配空间给数组打印

  char *v_buf = calloc(v_fileinfo.fsize, sizeof(char));

//用完free掉
  free(v_buf);
  v_buf = NULL;

这节没有代码或工程提供 就这样了

猜你喜欢

转载自blog.csdn.net/jwdeng1995/article/details/108063316
今日推荐