• 大小: 26KB
    文件类型: .rar
    金币: 2
    下载: 1 次
    发布日期: 2021-11-29
  • 语言: 其他
  • 标签: WINCE6  GPIO  驱动  

资源简介

WINCE6 GPIO 驱动,他是一个用WINCE gpio控制设备外围引脚高低的驱动程序,为流驱动

资源截图

代码片段和文件信息

// GPI.cpp : Defines the entry point for the DLL application.
//
#include “GPI.h“
#include 
#include 
#include 
#include 
#include   


#pragma comment(lib“ceddk.lib“)
  
#define GIO_VENDOR  CTL_CODE(FILE_DEVICE_SERIAL_PORT 2090 METHOD_BUFFERED FILE_ANY_ACCESS)     

static UCHAR * virGpioMembase = NULL;

/**************************************************************************
 *                            基础函数定义                                *
 **************************************************************************/
/************************************************************
* OutPortByte
*
* 向特定GPIO地址输出字节
*/
static void OutPortByte(WORD wAddrbyte bValue)
{
    if(NULL != virGpioMembase)
    {
        if( W83627_EFER == wAddr)
        {
            WRITE_PORT_UCHAR(virGpioMembasebValue);
        }
        else
        {
            WRITE_PORT_UCHAR(virGpioMembase+1bValue);      
        }
     RETAILMSG(TRUE (TEXT(“>>Liu wenlong-OutPortByte: Add:0x%x Val:0x%x\r\n“)wAddrbValue));            
    }
    else
    {
        RETAILMSG(TRUE (TEXT(“>>Liu wenlong-OutPortByte return for virGpioMembase NULL\r\n“)));    
    }
}

/************************************************************
* InPortByte
*
* 从特定GPIO地址读取字节
*/
static byte InPortByte(WORD wAddr)
{
    byte tmpRtnVal = 0xFF;

    if(NULL != virGpioMembase)
    {
        if( W83627_EFER == wAddr)
        {
            tmpRtnVal = READ_PORT_UCHAR(virGpioMembase);
        }
        else
        {
            tmpRtnVal = READ_PORT_UCHAR(virGpioMembase+1);      
        }
     RETAILMSG(TRUE (TEXT(“>>--Liu wenlong-InPortByte Add:0x%x Val:0x%x!\r\n“)wAddrtmpRtnVal));        
    }
    else
    {
        RETAILMSG(TRUE (TEXT(“>>Liu wenlong-InPortByte return for virGpioMembase NULL\r\n“)));     
    }
 
    return tmpRtnVal;
}

/************************************************************
* W83627Set
*
* 设定W8362 PIO A 值
*/
static void W83627Set(byte ucParaVal)
{
    RETAILMSG(TRUE (TEXT(“>>++Liu wenlong-W83627Set Val:0x%x!\r\n“)ucParaVal));   
    //enter the extended function mode,two successive writes of 0x87 must be applied to 
    //Extended Function Enable Registers(EFERs,i.e. 2Eh)
    OutPortByte(W83627_EFER0x87);
    OutPortByte(W83627_EFER0x87);
 
    //CRF1(GP10-GP17 data register Default 0x00)
    //if a port is programmed to be an output port,then its respective bit can be read/write
    //if a port is programmed to be an input port,then its respective bit can only be read
    OutPortByte(W83627_EFIR0x07);
    OutPortByte(W83627_EFDR0x08);
 
    //实际写值到对应的寄存器
    OutPortByte(W83627_EFIR 0xF1);
    OutPortByte(W83627_EFDR ucParaVal);    
  
    //exit extended function mode
    OutPortByte(W83627_EFER0xAA);
 
    Sleep(1);
}

/************************************************************
* W83627Set
*
* 读取

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     目录          0  2011-03-09 10:51  GPI

     文件      12591  2011-03-07 21:56  GPI\Build.log

     文件      11143  2011-03-08 23:38  GPI\GPI.cpp

     文件        642  2011-03-06 16:38  GPI\GPI.def

     文件       1525  2011-03-06 16:39  GPI\GPI.h

     文件        119  2011-03-04 00:10  GPI\GPI.reg

     文件        659  2011-03-02 17:16  GPI\makefile

     目录          0  2011-03-07 14:52  GPI\obj

     目录          0  2011-03-08 12:14  GPI\obj\x86

     目录          0  2011-03-08 13:57  GPI\obj\x86\debug

     文件      29510  2011-03-08 13:57  GPI\obj\x86\debug\GPI.obj

     文件         40  2011-03-08 14:40  GPI\obj\x86\debug\_objects.mac

     目录          0  2011-03-07 21:56  GPI\obj\x86\retail

     文件      31285  2011-03-07 21:56  GPI\obj\x86\retail\GPI.obj

     文件         41  2011-03-08 15:21  GPI\obj\x86\retail\_objects.mac

     文件        834  2011-03-04 17:08  GPI\sources

----------- ---------  ---------- -----  ----

                88389                    16


评论

共有 条评论