对disk_initialize、disk_read、disk_write几个函数也这样更改。 再次编译,发现提示一个关于get_fattime的错误,get_fattime用来获取当前时间,如果不需要,在ffconf.h中的宏定义#define _FS_NORTC改为1关闭,如果需要这个功能,需要在diskio.c里面,实现get_fattime函数,加入如下代码即可。 然后进行编译,这时错误就没有了...
disk_read实现直接从硬件接口读取数据,这个为接口FATFS的其它读操作接口函数调用,其声明如下: DRESULT disk_read (BYTE pdrv, BYTE *buff, DWORD sector, UINT count) 函数描述: 初始化指定编号的磁盘,磁盘所指定的存储区。 函数形参: 形参1:是FATFS管理的磁盘编号pdrv : 磁盘编号0~9,我们配置FF_VOLUMES为2来...
FR_DISK_ERR 由于底层磁盘 I/O 函数中的错误,而导致该函数失败。 FR_INT_ERR 由于一个错误的 FAT 结构或一个内部错误,而导致该函数失败。 FR_NOT_READY 由于驱动器中没有存储介质或任何其他原因,而导致磁盘驱动器无法工作。 FR_INVALID_OBJECT 文件对象无效。 说明 f_truncate 函数当 _FS_READONLY == 0 ...
ffconf.h:FATFS关键配置文件 diskio.c:FATFS模块需要实现的底层驱动 ff.c:FATFS开放函数 ffconf.h ffconf.h配置 diskio.c 需要实现函数如下: disk_initialize:初始化磁盘驱动器 disk_status:获取磁盘状态 disk_read:从磁盘驱动器读扇区 disk_write:从磁盘驱动器写扇区 disk_ioctl:控制设备实现指定功能,用于辅助FATF...
DSTATUS disk_initialize ( BYTE pdrv /* 物理驱动识别 */ ) { DSTATUS stat; int result; switch (pdrv) { case SD : //选择SD卡 stat=SD_Init(); //初始化SD卡-用户自己提供 } if(stat)return STA_NOINIT; //磁盘未初始化 return 0; //初始化成功 } 修改disk_read函数...
if (disk_read(0, fs->win, sect, 1) != RES_OK)/* Load boot record */ return 2; if (LD_WORD(&fs->win[BS_55AA]) != 0xAA55)/*Check record signature */ return 2; if (!memcmp(&fs->win[BS_FilSysType], "FAT", 3))/* Check FAT signature */ ...
disk_read函数有四个形参。pdrv为设备物理编号。buff是一个BYTE类型指针变量,buff指向用来存放读取到数据的存储区首地址。 sector是一个DWORD类型变量,指定要读取数据的扇区首地址。count是一个UINT类型变量,指定扇区数量。 BYTE类型实际是unsigned char类型,DWORD类型实际是unsigned long类型, UINT类型实际是 unsigned in...
首先是disk_initialize函数,该函数介绍如表46.1.2所示: 函数名称 disk_initialize 函数原型 DSTATUS disk_initialize(BYTE Drive) 功能描述 初始化磁盘驱动器 函数参数 Drive:指定要初始化的逻辑驱动器号,即盘符,应当取值0~9 ...
读扇区函数disk_read。用于实现对磁盘数据的读取,根据具体的磁盘IO编写,在ff.c文件中会被调用。其函数原型如下: DRESULT disk_read(BYTE drv,BYTE*buff,DWORD sector,BYTE.count); 根据其原型定义以及我们USB大容量存储设备的要求,我们可以实现磁盘数据读取函数如下: ...
修改disk_read函数,加入SD卡读任意扇区的函数(需要用户自己提供),其他不用到的选项可以删掉。 修改代码如下: /* 读扇区 */ DRESULT disk_read ( BYTE pdrv,/* 物理驱动编号 - 范围0-9*/ BYTE *buff,/* 数据缓冲区存储读取数据 */ DWORD sector,/* 扇区地址*/ ...