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

📄 driver.h

📁 基于周立功m2020-NU201+ASD1.2编写; 通过网络访问插入板中的U盘上指定文件
💻 H
📖 第 1 页 / 共 2 页
字号:
/****************************************Copyright (c)**************************************************
**                               广州致远电子有限公司
**                                        研发部 
**
**                                 http://www.embedtools.com
**
**--------------文件信息--------------------------------------------------------------------------------
**文   件   名: driver.h
**创   建   人: 周群威
**最后修改日期: 2006年6月28日
**描        述: MiniARM驱动软件包 
**
**--------------历史版本信息----------------------------------------------------------------------------
** 创建人:
** 版  本:
** 日 期:
** 描 述:
**             
**------------------------------------------------------------------------------------------------------
** 修改人: 梁  笑
** 版  本: V1.1
** 日 期: 2006年7月27日
** 描 述: 明确函数实际功能,增加设备的子设备操作功能
**
**--------------当前版本修订------------------------------------------------------------------------------
** 修改人: 李建明
** 日 期: 2007/03/08
** 描 述: 修改版本为 V1.20
**
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
/*                                         Note                                                        */
/*                                         注意                                                        */
/*                                         !!!!!                                                       */  
/*                                         !!!!!                                                       */
/*                          使用时请注意在config.h中加入以下配置信息                                   **
**                                                                                                     **
                            #include 	"Driver.h"
*********************************************************************************************************/
#define	__DRIVER_H__
#include "driver_err.h"
// 操作权限
#define SHARE                       0   /* 共享方式 */
#define OCCUPY                      1   /* 独占方式 */

#define	SYNC						2   /* 同步方式 */
#define	ASYNC					    4   /* 异步方式 */

// 读写方式
#define	O_RDONLY					1   /* 只读方式 0000 0001 */
#define O_WRONLY					2   /* 只写方式 0000 0010 */
#define	O_RDWR						3   /* 读写方式 0000 0011 */

// 设备状态
#define	CLOSE						0   /* 0000 0000*/
#define	OPEN					    1   /* 0000 0001*/
#define	BUSY						2   /* 0000 0010*/


#define MAX_DRIVER					12  /* 最大设备驱动数目 */
#define DEVICE_VERSION              120 /* 软件版本宏 */

// 读写超时
#define READ_TIME_OUT				65535
#define WRITE_TIME_OUT				65535


#define size_f  unsigned int
#define loff_t  long long

struct inode
{
    int32 n;
};

struct file
{
    int32 sub_number;
};

 
typedef struct
{
    int32  (*open)     (struct inode *inodp, struct file *filp);			                // 打开设备
	int32  (*read)     (struct file *filp, char *buf, size_f count, loff_t *f_pos);         // 从设备读数据
	int32  (*write)    (struct file *filp, char *buf, size_f count, loff_t *f_pos);         // 写数据到设备
	int32  (*iocontrol)(struct inode *inodp, struct file *filp, uint32 cmd, void *param);   // 设备输入输出控制
	int32  (*close)    (struct inode *inodp, struct file *filp);					        // 关闭设备
}DEVICE_OPERATION;

typedef struct {
    char    *NPtr;	                        // 指向设备名
    uint8   State;							// 设备所处状态
	uint8   PID;							// 独占方式下,打开该设备的任务
	uint8   Count;							// 设备打开次数
	uint8   Mod;							// 操作权限
	uint8   Flags;							// 读写方式
	uint8   SubDriver;						// 子设备个数
	uint32  LastErr;						// 设备最后一次出错信息
	OS_EVENT *DriverSem;					// 设备信号量
	DEVICE_OPERATION  *Opr;                 // 指向驱动操作结构体
} DEVICE_DATA;

/*********************************************************************************************************
** 底层驱动头文件包含
********************************************************************************************************/
#include	"GPIO.h"
#include	"UART0.h"
#include	"UART1.h"
#include    "I2C.h"
#include	"RTC.h"
#include	"WDT.h"
#include	"Timer1.h"
#include	"spi.h"
#include	"pwm.h"
#include 	"adc.h"
#include 	"Power&ExINT.h"
#include	"EMC.h"

#include	"PLLConfig.h"
#include	"INTControl.h"

/*********************************************************************************************************/

extern void DevDriveIni(void);	// 设备驱动初始化函数

/*********************************************************************************************************
** 函数名称: driverinit
** 功能描述: 设备列表初始化
** 输   入: 无
**          
** 输   出: 无
**
** 全局变量: Driver: 设备列表
** 调用模块: 无
**
** 作   者: 周群威
** 日   期: 2006年6月28日
**-------------------------------------------------------------------------------------------------------
** 修 改 人: 梁  笑
** 日    期: 2006年7月27日
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
extern void driverinit(void);


/*********************************************************************************************************
** 函数名称: createdriver
** 功能描述: 创建设备,在设备列表中注册
** 输   入: newdevice: 设备结构体名
**           
** 输   出: OPERATE_SUCCESS: 操作成功
**           负值: 失败,具体信息查看出错列表
** 全局变量: Driver: 设备列表
** 调用模块: FindDCB
**
** 作   者: 周群威
** 日   期: 2006年6月28日
**-------------------------------------------------------------------------------------------------------
** 修 改 人: 梁  笑
** 日    期: 2006年7月27日
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
extern int32 createdriver(DEVICE_DATA *newdevice);

/*********************************************************************************************************
** 函数名称: removedriver
** 功能描述: 创建设备,在设备列表中注销
** 输   入: devicename; 设备名
**          
** 输   出: OPERATE_SUCCESS: 操作成功
**           负值: 失败,具体信息查看出错列表 
** 全局变量: Driver: 设备列表
** 调用模块: FindDriverNumber
**
** 作   者: 周群威
** 日   期: 2006年6月28日
**-------------------------------------------------------------------------------------------------------
** 修 改 人: 梁  笑
** 日    期: 2006年7月27日
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
extern int32 removedriver(char *devicename);

/*********************************************************************************************************
** 函数名称: dopen
** 功能描述: 打开设备,获得设备使用权
** 输   入: name: 设备名
**           flags: 属性: O_RDONLY 只读方式,O_WRONLY 只写方式,O_RDWR 读写方式
**           perms: 打开方式: NORMAL 正常方式,JAM 阻塞方式
** 输   出: 设备操作句柄: 成功
**           负值: 失败,具体信息查看出错列表

⌨️ 快捷键说明

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