📄 driver.h
字号:
/****************************************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 + -