資源簡介
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\_ob
?????目錄??????????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\_ob
?????文件????????834??2011-03-04?17:08??GPI\sources
-----------?---------??----------?-----??----
????????????????88389????????????????????16
評論
共有 條評論