当前位置: 首页 > wzjs >正文

装饰设计网站什么是高清视频会议终端

装饰设计网站,什么是高清视频会议终端,哈尔滨优化调整人员流动管理,wordpress相册列表FATFS源码下载 http://elm-chan.org/fsw/ff/00index_e.html 添加 FATFS 源码到工程 解压下载的 FATFS 源码包,将ff.c、ff.h、ffsystem.h、ffconf.h、diskio.h复制到工程目录下的一个新文件夹(例如FatFS)中。 keil中添加源文件和路径&#x…

FATFS源码下载

http://elm-chan.org/fsw/ff/00index_e.html

添加 FATFS 源码到工程

  1. 解压下载的 FATFS 源码包,将ff.cff.hffsystem.hffconf.hdiskio.h复制到工程目录下的一个新文件夹(例如FatFS)中。

  2. keil中添加源文件和路径,省略

    编译并修改错误

    完成上述操作,对整个工程代码进行编译后,出现了如下13个报错信息,通过定位报错信息可以得知,主要是由于文件系统diskio.c中对MMC、RAM、USB设备的初始化、读、写、状态获取API未定义和ff.c中对文件时间戳未定义。

    因此,接下来对文件系统的移植操作主要是针对报错信息进行处理,将diskio.c文件中的硬件设备初始化、读、写、状态获取API及ff.c文件时间戳进行适配、定义实现。

    这个错误是默认FATFS是使能RTC功能的,这里可以将其关闭

    在“ffconf.h”配置文件中将这个宏设为1即可

    实现diskio.c文件

    diskio.c文件包含了 FATFS 与底层存储设备的接口函数,需要根据实际使用的存储设备进行实现。以下是一些常见的接口函数:

    disk_status

            这个函数的功能是获取设备的状态,只有一个参数pdrv,表示物理编号。因暂时只使用了SD卡,因此除了SD卡返回正常状态,其它类型设备全部返回的是非正常状态。

    /*-----------------------------------------------------------------------*/
    /* Get Drive Status                                                      */
    /*-----------------------------------------------------------------------*/DSTATUS disk_status (BYTE pdrv                /* Physical drive nmuber to identify the drive */
    )
    {DSTATUS stat;int result;switch (pdrv) {case DEV_SD :return SD_disk_status(pdrv);}return STA_NOINIT;
    }

    disk_initialize

            disk_initialize函数是设备初始化接口,也是有一个参数pdrv,用来指定设备物理编号。因只有一个SD设备,除了SD状态中调用了SD_Init()对SD卡进行了初始化设置,其它类型全部返回了未初始化。

    /*-----------------------------------------------------------------------*/
    /* Inidialize a Drive                                                    */
    /*-----------------------------------------------------------------------*/DSTATUS disk_initialize (BYTE pdrv                                /* Physical drive nmuber to identify the drive */
    )
    {DSTATUS stat;int result;switch (pdrv) {case DEV_SD :return SD_disk_initialize(pdrv);}return STA_NOINIT;
    }
    

    disk_read

            disk_read函数有四个形参。pdrv为设备物理编号。buff是一个BYTE类型指针变量,buff指向用来存放读取到数据的存储区首地址。 sector是一个DWORD类型变量,指定要读取数据的扇区首地址。count是一个UINT类型变量,指定扇区数量。

            BYTE类型实际是unsigned char类型,DWORD类型实际是unsigned long类型, UINT类型实际是 unsigned int类型,类型定义在ff.h文件中。

    /*-----------------------------------------------------------------------*/
    /* Read Sector(s)                                                        */
    /*-----------------------------------------------------------------------*/DRESULT disk_read (BYTE pdrv,                /* Physical drive nmuber to identify the drive */BYTE *buff,                /* Data buffer to store read data */LBA_t sector,        /* Start sector in LBA */UINT count                /* Number of sectors to read */
    )
    {DRESULT res;int result;switch (pdrv) {case DEV_SD :return SD_disk_read(pdrv, buff, sector, count);         }return RES_PARERR;
    }

    disk_write

            disk_write函数有四个形参,pdrv为设备物理编号。buff指向待写入扇区数据的首地址。sector,指定要读取数据的扇区首地址。 count指定扇区数量

    /*-----------------------------------------------------------------------*/
    /* Write Sector(s)                                                       */
    /*-----------------------------------------------------------------------*/#if FF_FS_READONLY == 0DRESULT disk_write (BYTE pdrv,                        /* Physical drive nmuber to identify the drive */const BYTE *buff,        /* Data to be written */LBA_t sector,                /* Start sector in LBA */UINT count                        /* Number of sectors to write */
    )
    {DRESULT res;int result;switch (pdrv) {case DEV_SD :return SD_disk_write(pdrv, buff, sector, count);         }return RES_PARERR;
    }#endif

    disk_ioctl

            disk_ioctl函数有三个形参,pdrv为设备物理编号,cmd为控制指令,包括发出同步信号、获取扇区数目、获取扇区大小、 获取擦除块数量等等指令,buff为指令对应的数据指针。

            对于SD卡,为支持格式化功能,需要用到获取扇区数量(GET_SECTOR_COUNT)指令和获取块尺寸(GET_BLOCK_SIZE)。另外,SD卡扇区大小为512字节, 串行Flash芯片一般设置扇区大小为4096字节,所以需要用到获取扇区大小(GET_SECTOR_SIZE)指令。

    /*-----------------------------------------------------------------------*/
    /* Miscellaneous Functions                                               */
    /*-----------------------------------------------------------------------*/DRESULT disk_ioctl (BYTE pdrv,                /* Physical drive nmuber (0..) */BYTE cmd,                /* Control code */void *buff                /* Buffer to send/receive control data */
    )
    {DRESULT res;int result;switch (pdrv) {case DEV_SD :return SD_disk_ioctl(pdrv, cmd, buff);;}return RES_PARERR;
    }

    配置ffconf.h文件

    #define FF_USE_MKFS   1
    #define FF_CODE_PAGE  936
    #define FF_USE_LFN    1
    #define FF_VOLUMES    1
    #define FF_MIN_SS     512
    #define FF_MAX_SS     4096
    1. FF_USE_MKFS: 格式化功能选择,为使用FatFs格式化功能,需要把它设置为1。

    2. FF_CODE_PAGE: 语言功能选择,并要求把相关语言文件添加到工程宏。为支持简体中文文件名需要使用"936"

    3. FF_USE_LFN: 长文件名支持,默认不支持长文件名,这里配置为1,支持长文件名,并指定将文件名存储在BSS段(数据段),也就是将其作为全局变量进行存储;配置为“#define FF_USE_LFN 2”就是将 文件名存储在STACK区(栈区);配置为“#define FF_USE_LFN 3”就是将文件名存储在HEAP(堆区)。一般配置为配置为“#define FF_USE_LFN 1”。如果存储在栈空间,防止某处操作不当而溢出。

    4. FF_VOLUMES: 指定物理设备数量,这里设置为1,SD卡设备

    5. FF_MIN_SS 、FF_MAX_SS: 指定扇区大小的最小值和最大值。SD卡扇区大小一般都为512字节,W25Q64芯片扇区大小一般设置为4096字节,所以需要把_MAX_SS改为4096。

    测试代码

    变量定义

    FATFS fs;
    FATFS *pfs;
    FIL fp;
    FRESULT fres;
    DWORD fre_clust;
    uint32_t totalSpace, freeSpace;

     初始化部分

            FRESULT ret = f_mount(&fs, "0:", 0x01);log_d("f_mount result: %02X\r\n", ret);if(ret != FR_OK){log_d("f_mount failed\r\n");Error_Handler();}/* Check freeSpace space */if(f_getfree("", &fre_clust, &pfs) != FR_OK){log_d("f_getfree failed\r\n");Error_Handler();}totalSpace = (uint32_t)((pfs->n_fatent - 2) * pfs->csize * 0.5);freeSpace = (uint32_t)(fre_clust * pfs->csize * 0.5);log_d("total:%dKB, free:%dKB\r\n", totalSpace, freeSpace);/* free space is less than 1kb */if(freeSpace < 1){log_d("freeSpace not enough\r\n");Error_Handler();}/* Open file to write */log_d("f_open first.txt\r\n");if(f_open(&fp, "first.txt", FA_OPEN_ALWAYS | FA_READ | FA_WRITE) != FR_OK){log_d("f_open failed\r\n");Error_Handler();}/* Writing text */f_puts("STM32 SD Card I/O Example via SPI\n", &fp);f_puts("Black Sheep Wall!!!", &fp);/* Close file */log_d("f_close first.txt\r\n");if(f_close(&fp) != FR_OK){log_d("f_close failed\r\n");Error_Handler();}/* Open file to read */log_d("f_open first.txt\r\n");if(f_open(&fp, "first.txt", FA_READ) != FR_OK){log_d("f_open failed\r\n");Error_Handler();}log_d("f_gets first.txt\r\n");while(f_gets(buffer, sizeof(buffer), &fp)){/* SWV output */log_d("%s", buffer);fflush(stdout);}log_d("\r\ndone\r\n");/* Close file */log_d("f_close first.txt\r\n");if(f_close(&fp) != FR_OK){log_d("f_close failed\r\n");Error_Handler();}/* Unmount SDCARD */log_d("f_mount unmount");if(f_mount(NULL, "0:", 1) != FR_OK) {log_d("f_mount failed (unmount)\r\n");Error_Handler();}

     运行效果

     

     


    文章转载自:

    http://Dx7mu9yB.hjjfp.cn
    http://yv6MIOHn.hjjfp.cn
    http://KK6zCT9b.hjjfp.cn
    http://seElWiXz.hjjfp.cn
    http://ha1azSze.hjjfp.cn
    http://imryb3pm.hjjfp.cn
    http://LuTB4Z0a.hjjfp.cn
    http://JuyDr5Mo.hjjfp.cn
    http://s8BF6JIJ.hjjfp.cn
    http://GrivysrQ.hjjfp.cn
    http://lqKLI5eA.hjjfp.cn
    http://wAlbiNU9.hjjfp.cn
    http://9lQWmQdL.hjjfp.cn
    http://ER2vgz9Y.hjjfp.cn
    http://RnbJEOWf.hjjfp.cn
    http://QVNlkmHJ.hjjfp.cn
    http://aB1yzUH0.hjjfp.cn
    http://l4GB9gip.hjjfp.cn
    http://mMjCSuK6.hjjfp.cn
    http://hy0c9wB4.hjjfp.cn
    http://NveZaR21.hjjfp.cn
    http://u4pYDqcz.hjjfp.cn
    http://uo9mgHMP.hjjfp.cn
    http://5xw2PN7g.hjjfp.cn
    http://Ac1LUn8n.hjjfp.cn
    http://lcKo1REh.hjjfp.cn
    http://jnyhh2wS.hjjfp.cn
    http://ybJQmuNt.hjjfp.cn
    http://1SeUzSOs.hjjfp.cn
    http://4nDbSRhz.hjjfp.cn
    http://www.dtcms.com/wzjs/746948.html

    相关文章:

  3. 易进网站建设推广怎么做出有品牌感的网站
  4. 做家教网站怎么样长春求推荐好的网站优化推广
  5. 湖州市建设局网站昆明seo网站推广
  6. 网站 不稳定做网站不会P图怎么办
  7. 投资公司网站模板如何查看自己制作的网站
  8. 网站备案格式韩国男女做游戏视频网站
  9. 做网站策划案做网站如何保证询盘数量
  10. 免费站推广网站在线开放平台架构
  11. 如何备份网站数据wordpress模版sns
  12. 奉贤集团公司网站建设中英双文网站怎么做
  13. 英文网站网站建设北海百度seo
  14. 中英文双语网站站点微信开发网站设计
  15. 国际网站怎么建设网上购物哪个平台质量有保证
  16. 旅游手机网站模板南京做网站优化价格
  17. 免费做名片儿的网站wordpress删除模板文件夹
  18. 网站的架构与建设廊坊永清网站建设
  19. 网站加入搜索引擎怎么做视频弹幕网站怎么做的
  20. 国外 网站有做验证码吗创建公司网站免费
  21. 温州专业网站建设公司计算机网站建设相关的书籍
  22. 杭州网站建设岗位薪资wordpress 如何重启
  23. 网站建设哪个公司的好建设网站的效益分析
  24. wordpress 众筹网站模板wordpress文件在哪
  25. 基于php网站开发设计做长页网站
  26. thinkphp企业网站1280的界面网站做多宽
  27. 深圳做网站网络公司wordpress 定向次数过多
  28. 一个云主机 多个网站建设短视频网站
  29. 备案的时候需要网站吗广东建设职业技术学院网站
  30. 网站维护工作内容有什么会展设计合同范本
  31. 建国内外网站有什么区别760关键词排名查询
  32. 网站查询入口淮安哪有专业做网站的公司