⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 osfile.h

📁 很全的文件系统(完整支持FAT12/FAT16/FAT32)
💻 H
字号:
/****************************************Copyright (c)**************************************************
**                               广州周立功单片机发展有限公司
**                                     研    究    所
**                                        ARM开发组
**
**                                 http://www.zlgmcu.com
**
**--------------文件信息--------------------------------------------------------------------------------
**文   件   名: OSFile.h
**创   建   人: 陈明计
**最后修改日期: 2004年7月9日
**描        述: ZLG/FS在μCOS-II下使用的接口
**              
**--------------历史版本信息----------------------------------------------------------------------------
** 创建人: 陈明计
** 版  本: V1.0
** 日 期: 2003年12月12日
** 描 述: 原始版本
**
**--------------当前版本修订------------------------------------------------------------------------------
** 修改人: 陈明计
** 日 期: 2004年7月9日
** 描 述: 修改注释
**
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
#ifndef FILE_Q_SIZE
#define FILE_Q_SIZE         32          /* 可以保存的未处理的命令数目 */
#endif

typedef enum _OSFileCommand             /* 命令代码 */
{
    OS_RemoveFile,                      /* 删除文件 */
    OS_FileOpen,                        /* 打开文件 */
    OS_FileClose,                       /* 关闭文件 */
    OS_FileGetCh,                       /* 从文件中读取一个字节数据 */
    OS_FileRead,                        /* 从文件中读取多个字节数据 */
    OS_FilePutCh,                       /* 写一个字节数据到文件 */
    OS_FileWrite,                       /* 写多个字节数据到文件 */
    OS_FileCloseAll,                    /* 关闭所有文件 */
    OS_FileEof,                         /* 判断文件是否结束 */
    OS_FileSeek,                        /* 移动文件指针 */
    OS_MakeDir,                         /* 建立目录 */
    OS_RemoveDir,                       /* 删除空目录 */
    OS_ChangeDir,                       /* 改变当前目录 */
    OS_GetDrive,                        /* 获取指定目录所在的逻辑盘的内部表示法 */
    OS_ChangeDrive,                     /* 改变当前逻辑盘 */
    OS_GetFDTInfo,                      /* 获取指定FDT信息 */
    OS_AddFileDriver,                   /* 增加底层驱动程序 */
    OS_RemoveFileDriver,                /* 删除底层驱动程序 */
    OS_AllCacheWriteBack                /* 同步cache和逻辑盘 */
}OSFileCommand;


typedef union _Parameter
{
    uint8           Puint8;
    uint16          Puint16;
    uint32          Puint32;
    int8            Pint8;
    int16           Pint16;
    int32           Pint32;
    HANDLE          Handle;
    char            *cp;
    unsigned char   *ucp;
    void            *Pvp;
}Parameter;


/* OS下文件系统参数数据结构 */
typedef struct _OSFileParameter
{
    OSFileCommand   Command;        // 命令
    OS_EVENT        *Rt;            // 用于返回
    Parameter       P1;             // 第一个参数及返回值
    Parameter       P2;             // 第二个参数
    Parameter       P3;             // 第三个参数
    Parameter       P4;             // 第四个参数
}OSFileParameter;


#ifndef IN_OSFILE

extern uint8 OSRemoveFile(char *DirFileName);
/*********************************************************************************************************
** 函数名称: OSRemoveFile
** 功能描述: 删除文件
**
** 输 入: DirFileName:用户使用的文件名
**
** 输 出: RETURN_OK:成功
**        其它参考fat.h中关于返回值的说明
** 全局变量: 
** 调用模块: OSQPost,OSTaskSuspend
********************************************************************************************************/

HANDLE OSFileOpen(char *DirFileName, char *Type);
/*********************************************************************************************************
** 函数名称: OSFileOpen
** 功能描述: 以指定方式打开文件
**
** 输 入: DirFileName:用户使用的文件名
**        Type:打开方式
** 输 出: 文件句柄,Not_Open_FILE为不能打开
**         
** 全局变量: 
** 调用模块: OSQPost,OSTaskSuspend
********************************************************************************************************/

extern uint8 OSFileClose(HANDLE Handle);
/*********************************************************************************************************
** 函数名称: OSFileClose
** 功能描述: 关闭指定文件
**
** 输 入: Handle:文件句柄
**
** 输 出: RETURN_OK:成功
**        其它参考fat.h中关于返回值的说明 
** 全局变量: 
** 调用模块: OSQPost,OSTaskSuspend
********************************************************************************************************/

extern uint8 OSFileGetCh(uint8 *Ch, HANDLE Handle);
/*********************************************************************************************************
** 函数名称: OSFileGetCh
** 功能描述: 从文件读一个字节
**
** 输 入: Ch:返回读到的数据
**        Handle:文件句柄
** 输 出: RETURN_OK:成功
**        其它参考fat.h中关于返回值的说明 
** 全局变量: 
** 调用模块: OSQPost,OSTaskSuspend
********************************************************************************************************/

extern uint32 OSFileRead(void *Buf, uint32 Size, HANDLE Handle);
/*********************************************************************************************************
** 函数名称: OSFileRead
** 功能描述: 读取文件
**
** 输 入: Buf:保存读回的数据
**        Size:要读的字节数
**        Handle:文件句柄
** 输 出: 实际读到的字节数
**         
** 全局变量: 
** 调用模块: OSQPost,OSTaskSuspend
********************************************************************************************************/

extern uint8 OSFilePutCh(uint8 Ch, HANDLE Handle);
/*********************************************************************************************************
** 函数名称: OSFilePutCh
** 功能描述: 写一个字节到文件
**
** 输 入: Ch:要写的数据
**        Handle:文件句柄
** 输 出: RETURN_OK:成功
**        其它参考fat.h中关于返回值的说明 
** 全局变量: 
** 调用模块: OSQPost,OSTaskSuspend
********************************************************************************************************/

extern uint32 OSFileWrite(void *Buf, uint32 Size, HANDLE Handle);
/*********************************************************************************************************
** 函数名称: OSFileWrite
** 功能描述: 写文件
**
** 输 入: Buf:要写的数据
**        Size:要写的字节数
**        Handle:文件句柄
** 输 出: 实际写的字节数
**         
** 全局变量: 
** 调用模块: OSQPost,OSTaskSuspend
********************************************************************************************************/

extern uint8 OSFileCloseAll(void);
/*********************************************************************************************************
** 函数名称: OSFileCloseAll
** 功能描述: 关闭所有打开的文件
**
** 输 入: 无
**
** 输 出: NOT_RUN:未执行
**        RETURN_OK:成功
** 全局变量: 
** 调用模块: OSQPost,OSTaskSuspend
**
********************************************************************************************************/

extern uint8 OSFileEof(HANDLE Handle);
/*********************************************************************************************************
** 函数名称: OSFileEof
** 功能描述: 判断文件是否到读\写到文件尾
**
** 输 入: Handle:文件句柄
**
** 输 出: 0:否
**        1:是 
** 全局变量: 
** 调用模块: OSQPost,OSTaskSuspend
**
********************************************************************************************************/

extern uint8 OSFileSeek(HANDLE Handle, int32 offset, uint8 Whence);
/*********************************************************************************************************
** 函数名称: OSFileSeek
** 功能描述: 移动文件读\写位置
**
** 输 入: Handle:文件句柄
**        offset:移动偏移量
**        Whence:移动模式SEEK_SET:从文件头计算SEEK_CUR:从当前位置计算SEEK_END:从文件尾计算
** 输 出: 无
**         
** 全局变量: 
** 调用模块: OSQPost,OSTaskSuspend
**
********************************************************************************************************/

extern uint8 OSMakeDir(char *Path);
/*********************************************************************************************************
** 函数名称: OSMakeDir
** 功能描述: 建立目录
**
** 输 入: Path:绝对路径名
**
** 输 出: RETURN_OK:成功
**        其它参考fat.h中关于返回值的说明
** 全局变量: 
** 调用模块: OSQPost,OSTaskSuspend
**
********************************************************************************************************/

extern uint8 OSRemoveDir(char *Path);
/*********************************************************************************************************
** 函数名称: OSRemoveDir
** 功能描述: 删除目录
**
** 输 入: Path:绝对路径名
**
** 输 出: RETURN_OK:成功
**        其它参考fat.h中关于返回值的说明
** 全局变量: 
** 调用模块: OSQPost,OSTaskSuspend
**
********************************************************************************************************/

extern uint8 OSChangeDir(char *Path);
/*********************************************************************************************************
** 函数名称: OSChangeDir
** 功能描述: 改变当前目录
**
** 输 入: Path:路径名
**
** 输 出: RETURN_OK:成功
**        其它参考fat.h中关于返回值的说明
** 全局变量: 
** 调用模块: OSQPost,OSTaskSuspend
**
********************************************************************************************************/

extern uint8 OSGetDrive(char *Path);
/*********************************************************************************************************
** 函数名称: OSGetDrive
** 功能描述: 获取指定目录的驱动器
**
** 输 入: Path:路径名
**        
** 输 出: 驱动器号
**
** 全局变量: 
** 调用模块: OSQPost,OSTaskSuspend
**
********************************************************************************************************/

extern uint8 OSChangeDrive(char *Drive);
/*********************************************************************************************************
** 函数名称: OSChangeDrive
** 功能描述: 改变当前逻辑盘
**
** 输 入: Drive:逻辑盘符字符串
**        
** 输 出: RETURN_OK:成功
**        NOT_FIND_DISK:逻辑盘不存在
**        PARAMETER_ERR:非法参数
** 全局变量: 
** 调用模块: OSQPost,OSTaskSuspend
**
** 作 者: 陈明计
** 日 期: 2003年9月8日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/

extern uint8 OSGetFDTInfo(FDT *Rt,uint8 Drive, uint32 ClusIndex, uint32 Index);
/*********************************************************************************************************
** 函数名称: OSGetFDTInfo
** 功能描述: 获取指定目录指定文件(目录)信息
**
** 输 入: Rt:存储返回信息的指针
**        Drive:驱动器号
**        ClusIndex:目录首簇号
**        Index:文件(目录)在FDT中的位置
** 输 出: RETURN_OK:成功
**        其它参考fat.h中关于返回值的说明
** 全局变量: 
** 调用模块: OSQPost,OSTaskSuspend
**
********************************************************************************************************/

extern uint8 OSAddFileDriver(uint16  (* DiakCommand)(uint8 Cammand, void *Parameter));
/*********************************************************************************************************
** 函数名称: OSAddFileDriver
** 功能描述: 增加一个底层驱动程序
**
** 输 入: DiakCommand:驱动程序接口函数
**
** 输 出: NOT_RUN:没有执行
**        RETURN_OK:执行成功
** 全局变量: 
** 调用模块: OSQPost,OSTaskSuspend
**
********************************************************************************************************/

extern uint8 OSRemoveFileDriver(uint8 Drive);
/*********************************************************************************************************
** 函数名称: OSRemoveFileDriver
** 功能描述: 删除一个底层驱动程序
**
** 输 入: Drive:逻辑驱动器号
**
** 输 出: 无
**         
** 全局变量: 
** 调用模块: OSQPost,OSTaskSuspend
**
********************************************************************************************************/

extern void OSAllCacheWriteBack(void);
/*********************************************************************************************************
** 函数名称: OSAllCacheWriteBack
** 功能描述: 把所有已改变的扇区写回逻辑盘
**
** 输 入: 无
**
** 输 出: NOT_RUN:没有执行
**        RETURN_OK:执行成功
**         
** 全局变量: 
** 调用模块: OSQPost,OSTaskSuspend
**
********************************************************************************************************/

extern void OSFileTask(void *pdata);
/*********************************************************************************************************
** 函数名称: OSFileTask
** 功能描述: 文件系统服务任务
**
** 输 入: 无
**
** 输 出: 无
**         
** 全局变量: 
** 调用模块: OSQPost,OSTaskSuspend
**
********************************************************************************************************/
#endif

/*********************************************************************************************************
**                            End Of File
********************************************************************************************************/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -