GPIO

GPIO驱动函数

 

函数名称:BOOL  GPIO_Close(DWORD Handle)

功能描述:驱动程序关闭函数

函数参数:DWORD Handle:驱动程序句柄

函数返回值:FALSE: 失败    TRUE: 成功

调用程序:CloseHandle(hFile);

 

 

函数名称:DWORD   GPIO_Open (

                             DWORD dwData,

                                               DWORD dwAccess,

                                               DWORD dwShareMode

                                                )

功能描述:打开驱动程序

函数参数:DWORD dwData     : 设备驱动程序句柄

          DWORD dwAccess   : 访问请求代码,是读和写的组合

          DWORD dwShareMode: 共享模式 

函数返回值:驱动程序引用事例句柄

调用程序:

CreateFile(TEXT("PIO1:"), GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, 0, 0);  

 

 

函数名称:BOOL  PIO_IOControl(

                                                     DWORD Handle,

                                                     DWORD dwIoControlCode,

                                                     PBYTE pInBuf,

                                                     DWORD nInBufSize,

                                                     PBYTE pOutBuf,

                                                     DWORD nOutBufSize,

                                                     PDWORD pBytesReturned

                                               )

功能描述:驱动程序 I/O 请求

函数参数:Handle:设备驱动的句柄

                dwIoControlCode:操作码  设备指定的WORD型标识,用于描述这个IOControl操作的定义,该值定义:

//设置GPIO口为输出口                   

#define  IOCTL_GPx_SET_PIN_OUT                   0x0000010

//设置多个GPIO口为输出口

#define  IOCTL_GPx_SET_MULTI_PIN_OUT          0x0000020

//设置GPIO口为输入口

#define  IOCTL_GPx_SET_PIN_IN                          0x0000030

//设置多个GPIO口为输入口

#define  IOCTL_GPx_SET_MULTI_PIN_IN              0x0000040

//设置GPIO口输出高电平

#define  IOCTL_GPx_SET_PIN                               0x0000050

//设置多个GPIO口输出高电平

#define  IOCTL_GPx_SET_MULTI_PIN                   0x0000060

//设置GPIO口输出低电平

#define  IOCTL_GPx_CLR_PIN                               0x0000070

//设置多个GPIO口输出低电平

#define  IOCTL_GPx_CLR_MULTI_PIN                   0x0000080

//读取引脚电平状态

#define  IOCTL_GPx_READ_PIN                      0x0000090

//读取多个引脚电平状态

#define  IOCTL_GPx_READ_ALL_PIN                     0x00000A0

//使能GPIO口内部上拉

#define  IOCTL_GPx_EN_PULLUP                          0x00000B0

//使能多个GPIO口内部上拉

#define  IOCTL_GPx_EN_MULTI_PIN_PULLUP       0x00000C0

//禁止GPIO口内部上拉

#define  IOCTL_GPx_DIS_PULLUP                         0x00000D0

//禁止多个GPIO口内部上拉

#define  IOCTL_GPx_DIS_MULTI_PIN_PULLUP     0x00000E0

               pInBuf:输入Buffer  缓冲区指针,指向需要传给驱动程序使用的数据

               nInBufSize:输入Buffersize  要传给驱动程序使用的数据长度

               pOutBuf:输出Buffer  缓冲区指针 指向驱动程序传给应用程序使用的数据

               nOutBufSize:输出Buffersize  要传送给应用程序使用的数据长度

               pBytesReturned:实际处理数据长度

功能

DwIoControlCode(x取值为A-----H)

pInBuf

nInBufSize

设置GPIO口为输出口

IOCTL_GPx_SET_PIN_OUT

GPIO的编号

1

设置多个GPIO口为输出口

IOCTL_GPx_SET_MULTI_PIN_OUT

GPIO的编号

1

设置GPIO口为输入口

IOCTL_GPx_SET_PIN_IN

GPIO的编号

1

设置多个GPIO口为输入口

IOCTL_GPx_SET_MULTI_PIN_IN

GPIO的编号

1

设置GPIO口输出高电平

IOCTL_GPx_SET_PIN

GPIO的编号

1

设置多个GPIO口输出高电平

IOCTL_GPx_SET_MULTI_PIN

GPIO的编号

1

设置GPIO口输出低电平

IOCTL_GPx_CLR_PIN

GPIO的编号

1

设置多个GPIO口输出低电平

IOCTL_GPx_CLR_MULTI_PIN

GPIO的编号

1

读取引脚电平状态

IOCTL_GPx_READ_PIN

GPIO的编号

1

读取多个引脚电平状态

IOCTL_GPx_READ_ALL_PIN

GPIO的编号

1

使能GPIO口内部上拉

IOCTL_GPx_EN_PULLUP

GPIO的编号

1

使能多个GPIO口内部上拉

IOCTL_GPx_EN_MULTI_PIN_PULLUP

GPIO的编号

1

禁止GPIO口内部上拉

IOCTL_GPx_DIS_PULLUP

GPIO的编号

1

禁止多个GPIO口内部上拉

IOCTL_GPx_DIS_MULTI_PIN_PULLUP

GPIO的编号

1

 

 

函数返回值:TRUE: 成功   FALSE: 失败

调用程序:

 

//设置GPG9管脚输出口

BYTE pinnum1=9;

::DeviceIoControl(hFile,IOCTL_GPG_SET_PIN_OUT,&pinnum1,1,NULL,0,NULL,NULL);

//禁止GPG9内部上拉

::DeviceIoControl(hFile,IOCTL_GPG_DIS_PULLUP,&pinnum1,1,NULL,0,NULL,NULL);

//输出低电平

 ::DeviceIoControl(hFile,IOCTL_GPG_CLR_PIN,&pinnum,1,NULL,0,NULL,NULL);

//输出高电平

::DeviceIoControl(hFile,IOCTL_GPG_SET_PIN,&pinnum,1,NULL,0,NULL,NULL);

 

 

 

#define   MOTOA  5

#define   MOTOB  6

#define   MOTOC  7

#define   MOTOD  0

DWORD pinmask = (1 << MOTOA) + (1 << MOTOB) + (1 << MOTOC) + (1 << MOTOD);

 

//设置管脚GPE12,GPE13,GPE14,GPE15输出

::DeviceIoControl(hFile,IOCTL_GPC_SET_MULTI_PIN_OUT,&pinmask,1,NULL,0,NULL,NULL);

 

//设置多个GPIO口为高电平

// ::DeviceIoControl(hFile, IOCTL_GPC_SET_PIN, &pinnum, 1, NULL, 0, NULL, NULL);

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

作者:宇帆 cfanlwn

时间:2009-12-06   20:58:15

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值