?? 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 + -