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

📄 udisk.h

📁 基于lpc2378的u盘驱动
💻 H
字号:
/****************************************Copyright (c)**************************************************
**                               Guangzou ZLG-MCU Development Co.,LTD.
**                                      graduate school
**                                 http://www.zlgmcu.com
**
**--------------File Info-------------------------------------------------------------------------------
** File name:			udisk.c
** Descriptions:		LPC2300控制优盘伴侣的串口驱动程序头文件
**
**------------------------------------------------------------------------------------------------------
** Created by:			zhoulishan
** Created date:		
** Version:				1.0
** Descriptions:		The original version
**
**------------------------------------------------------------------------------------------------------
** Modified by:			Litiantian
** Modified date:	    
** Version:
** Descriptions:		大大改善代码可读性,并消除了若干BUG
********************************************************************************************************/
#ifndef __UDISK_H
#define __UDISK_H

/* 文件指针调整方式相关宏 */
#define SEEK_SET    				0  		// 从文件开始处移动文件指针 
#define SEEK_CUR    				1 		// 从文件当前位置移动文件指针 
#define SEEK_END    				2 		// 从文件尾移动文件指针 

/* 宏定义 */
#define PARAMETER_ERR               0xff    // 非法参数        
#define MAX_FILE_SIZE 				512
#define WAIT_TIME_OUT				0xffff
#define	COMMNUNICATION_OFF			0xff 	// 禁止从机和主机之间的通讯
#define	COMMNUNICATION_ON			0		// 允许从机和主机之间的通讯
#define	HANDLE_AVAILABLE			0xff 	// 文件句柄有效,指示了此时没有其它文件打开
#define	CMD_SUCCESS					0
#define	NO_RESPONSE					0xf0
#define UART0_INT					6

/* 所涉及的数据结构定义 */

/* 文件控制块 */
typedef struct _FileCB
{
	uint8	fh;								// 若该值为0xff,表明本句柄空闲;否则表明句柄已被其它文件占用.
	uint32	fsize;							
	
}FileCB;

/* 描述文件操作信息的数据结构 */
typedef struct _CONTR_DISK	
{
	uint8 	cmd;							// 功能代码
	uint8 	cmds;							// 存储应答帧里的功能代码执行状态信息,或请求帧里的功能代码参数	
	char  	*fname;							// 文件名或路径
	
	uint32 	rlen;							// 需读出数据的长度
	uint8	*write_ptr;						// 用于装载应答帧数据域数据的数据缓冲区指针
	uint32 	wlen;							// 待写入数据的长度
	
 	volatile uint8 state;					// 串口通讯开关:  0xff:禁止串口通讯; 0x00:串口通讯允许
}CONTR_DISK;


/* 系统信息数据块的定义 */
typedef struct __SYSINF
{
	uint8	Baud;
	
	uint8	Year;
	uint8	Month;
	uint8	Dom;
	uint8	Hour;
	uint8	Min;
	uint8	Sec;
	
	uint8	DiskIn;			   				// 优盘的插入状态
	
	FileCB	FH;								// 文件控制块

	uint8	version;						// 固件版本号
}SYSINF;


/*********************************************************************************************************
** 函数名称: UART0Init
** 功能描述: 初始化UART0 
** 输入参数: bps:	波特率
** 输出参数: 无
********************************************************************************************************/
extern void UART0Init(uint32 bps);

/********************************************************************************************************
** 函数名称:UDiskIni
** 功能描述:操作EasyUDisk功能模块之前需调用的初始化函数
** 输入参数:baud  初始化使用的波特率
** 输出参数:无
********************************************************************************************************/
extern	void UDiskIni(uint32 baud);

/*********************************************************************************************************
** 函数名称: GetSysInfo
** 功能描述: 获取系统信息
** 输入参数: sysinfptr:	系统信息数据块变量的指针
** 输出参数: TRUE:		正常应答返回
**			 FALSE:		超时出错返回
********************************************************************************************************/
extern	uint8 GetSysInfo(SYSINF *sysinfptr);

/*********************************************************************************************************
** 函数名称: SetUDiskSysInfo
** 功能描述: 设置EasyUDisk功能模块的系统信息
** 输入参数: sysinfptr:		系统信息数据块变量指针
** 输出参数: TRUE:			正常应答返回
**			 FALSE:			超时出错返回
********************************************************************************************************/
extern	uint8  SetUDiskSysInfo(SYSINF *sysinfptr);

/*********************************************************************************************************
** 函数名称: MakeDir
** 功能描述: 建立目录
** 输入参数: Path: 路径或目录名
** 输出参数: 若接收到应答则返回指令的执行状态;若没有接收到回应, 则返回0xff
********************************************************************************************************/
extern	uint8 MakeDir(char *Path);

/*********************************************************************************************************
** 函数名称: ChangeDir
** 功能描述: 设置当前目录
** 输入参数: DirName:  新当前目录的路径或目录名
** 输出参数: 为0表示正常,
**			 非零值为失败
********************************************************************************************************/
extern	uint8 ChangeDir(char *DirName);

/*********************************************************************************************************
** 函数名称: RemoveDir
** 功能描述: 删除指定的目录
** 输入参数: DirName:  被删除目录的名字或路径
** 输出参数: 为0表示正常删除目录,
**			 非零值为删除目录失败
********************************************************************************************************/
extern	uint8 RemoveDir(char *DirName);

/*********************************************************************************************************
** 函数名称: FileOpen
** 功能描述: 打开文件.若该文件不存在,则建立一个
** 输入参数: fileName:	文件名
** 输出参数: 文件控制块指针,NULL为不能打开文件, 非零值为当前文件控制块的指针
********************************************************************************************************/
extern	FileCB	*FileOpen(char *fileName);

/*********************************************************************************************************
** 函数名称: FileClose
** 功能描述: 关闭已打开的文件
** 输入参数: 无
** 输出参数: NO_RESPONSE为没有应答, 否则返回指令执行的状态
********************************************************************************************************/
extern	uint8 FileClose(void);

/*********************************************************************************************************
** 函数名称: RemoveFile
** 功能描述: 删除指定的文件
** 输入参数: FileName:  文件名或路径
** 输出参数: 为0表示正常删除文件,
**	         非零值为删除文件失败
********************************************************************************************************/
extern	uint8 RemoveFile(char *FileName);

/*********************************************************************************************************
** 函数名称: FileWrite
** 功能描述: 可将字节数大于512的数据块写入文件
** 输入参数: Buf     : 要写的数据所在缓存的地址
**        	 Size    : 要写入文件的字节数
**        	 FileCBPt: 文件控制块指针
** 输出参数: 实际写的字节数
********************************************************************************************************/
extern	uint32 FileWrite(uint8 *Buf,  uint32 Size,  FileCB	*FileCBPt);

/*********************************************************************************************************
** 函数名称: FileRead
** 功能描述: 读取文件
** 输入参数: Buf     :保存读回的数据
**        	 Size    :要读的字节数
**        	 FileCBPt:文件控制块指针
** 输出参数: 实际读到的字节数
********************************************************************************************************/
extern	uint32 FileRead(uint8 *Buf,  uint32 Size,  FileCB	*FileCBPt);

/*********************************************************************************************************
** 函数名称: FileSeek
** 功能描述: 移动文件读\写位置
** 输入参数: FileCBPt  : 文件控制块指针
**        	 offset    : 移动偏移量
**        	 move_mode : 移动模式
**					  SEEK_SET  文件的读写指针移动至文件头位置,并从此处开始移动
**					  SEEK_CUR  文件的读写指针移动至当前位置,并从此处开始移动
**					  SEEK_END  文件的读写指针移动至至文件尾,并从此处开始移动
** 输出参数: 成功返回0
**         	 出错返回非0值
********************************************************************************************************/
extern	uint8 FileSeek(FileCB	*FileCBPt,  int32 offset,  uint8 move_mode);

#endif

⌨️ 快捷键说明

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