GPIO驱动程序及测试程序.docx

上传人:b****0 文档编号:312109 上传时间:2022-10-08 格式:DOCX 页数:9 大小:12.19KB
下载 相关 举报
GPIO驱动程序及测试程序.docx_第1页
第1页 / 共9页
GPIO驱动程序及测试程序.docx_第2页
第2页 / 共9页
GPIO驱动程序及测试程序.docx_第3页
第3页 / 共9页
GPIO驱动程序及测试程序.docx_第4页
第4页 / 共9页
GPIO驱动程序及测试程序.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

GPIO驱动程序及测试程序.docx

《GPIO驱动程序及测试程序.docx》由会员分享,可在线阅读,更多相关《GPIO驱动程序及测试程序.docx(9页珍藏版)》请在冰豆网上搜索。

GPIO驱动程序及测试程序.docx

GPIO驱动程序及测试程序

GPIO驱动程序,主要是GIO_Cont⑹:

BOOLGIO_IOControl(DWORDhOpenContext,

DWORDdwCode,

PBYTEpBufIn,

DWORDdwLenIn,

PBYTEpBufOut,

DWORDdwLenOut,

PDWORDpdwActualOut)

{

switch(dwCode)

{

caseIO_CTL_GPIO_A_CON:

v_plOPregs->GPACON=*(DWORD*)pBufln;//GPACONSET

break;

caseIO_CTL_GPIO_A_DAT_OUTPUT:

v_pIOPregs->GPADAT=*(DWORD*)pBufln;//GPADATSET(OUTPUT)alsoforFunctionalPinbreak;

caseIO_CTL_GPIO_B_CON:

v_pIOPregs->GPBCON=*(DWORD*)pBufln;//GPBCONSET

break;

caseIO_CTL_GPIO_B_DAT_INPUT:

*(DWORD*)pBufOut=v_plOPregs->GPBDAT;//GPBDATSET(INPUT)alsoforFunctionalPinbreak;

caseIO_CTL_GPIO_B_DAT_OUTPUT:

v_pIOPregs->GPBDAT=*(DWORD*)pBufln;//GPBDATSET(OUTPUT)alsoforFunctionalPinbreak;

caseIO_CTL_GPIO_B_UP:

v_pIOPregs->GPBUP=*(DWORD*)pBufln;//GPBUPSET

break;

caseIO_CTL_GPIO_C_CON:

v_pIOPregs->GPCCON=*(DWORD*)pBufln;//GPCCONSET

caseIO_CTL_GPIO_C_DAT_INPUT:

*(DWORD*)pBufOut=v_plOPregs->GPCDAT;//GPCDATSET(INPUT)alsoforFunctionalPinbreak;

caseIO_CTL_GPIO_C_DAT_OUTPUT:

v_pIOPregs->GPCDAT=*(DWORD*)pBufln;//GPCDATSET(OUTPUT)alsoforFunctionalPinbreak;

caseIO_CTL_GPIO_C_UP:

v_pIOPregs->GPCUP=*(DWORD*)pBufln;//GPCUPSET

break;

caseIO_CTL_GPIO_D_CON:

v_plOPregs->GPDCON=*(DWORD*)pBufln;//GPDCONSET

break;

caseIO_CTL_GPIO_D_DAT_INPUT:

*(DWORD*)pBufOut=v_plOPregs->GPDDAT;//GPDDATSET(INPUT)alsoforFunctionalPinbreak;

caseIO_CTL_GPIO_D_DAT_OUTPUT:

v_pIOPregs->GPDDAT=*(DWORD*)pBufln;//GPDDATSET(OUTPUT)alsoforFunctionalPinbreak;

caseIO_CTL_GPIO_D_UP:

v_pIOPregs->GPDUP=*(DWORD*)pBufln;//GPDUPSET

break;

caseIO_CTL_GPIO_E_CON:

v_plOPregs->GPECON=*(DWORD*)pBufln;//GPECONSET

break;

caseIO_CTL_GPIO_E_DAT_INPUT:

*(DWORD*)pBufOut=v_plOPregs->GPEDAT;//GPEDATSET(INPUT)alsoforFunctionalPinbreak;

caseIO_CTL_GPIO_E_DAT_OUTPUT:

v_pIOPregs->GPEDAT=*(DWORD*)pBufln;//GPEDATSET(OUTPUT)alsoforFunctionalPinbreak;

caseIO_CTL_GPIO_E_UP:

v_pIOPregs->GPEUP=*(DWORD*)pBufln;//GPEUPSET

caseIO_CTL_GPIO_F_CON:

v_plOPregs->GPFCON=*(DWORD*)pBufln;//GPFCONSET

break;

caseIO_CTL_GPIO_F_DAT_INPUT:

*(DWORD*)pBufOut=v_plOPregs->GPFDAT;//GPFDATSET(INPUT)alsoforFunctionalPin

break;

caseIO_CTL_GPIO_F_DAT_OUTPUT:

v_plOPregs->GPFDAT=*(DWORD*)pBufln;//GPFDATSET(OUTPUT)alsoforFunctionalPinbreak;

caseIO_CTL_GPIO_F_UP:

v_pIOPregs->GPFUP=*(DWORD*)pBufln;//GPFUPSET

break;

caseIO_CTL_GPIO_G_CON:

v_pIOPregs->GPGCON=*(DWORD*)pBufln;//GPGCONSET

break;

caseIO_CTL_GPIO_G_DAT_INPUT:

*(DWORD*)pBufOut=v_plOPregs->GPGDAT;//GPGDATSET(INPUT)alsoforFunctionalPinbreak;

caseIO_CTL_GPIO_G_DAT_OUTPUT:

v_pIOPregs->GPGDAT=*(DWORD*)pBufln;//GPGDATSET(OUTPUT)alsoforFunctionalPinbreak;

caseIO_CTL_GPIO_G_UP:

v_pIOPregs->GPGUP=*(DWORD*)pBufln;//GPGUPSET

break;

caseIO_CTL_GPIO_H_CON:

v_plOPregs->GPHCON=*(DWORD*)pBufln;//GPHCONSET

break;

caseIO_CTL_GPIO_H_DAT_INPUT:

*(DWORD*)pBufOut=v_plOPregs->GPHDAT;//GPHDATSET(INPUT)alsoforFunctionalPinbreak;

caseIO_CTL_GPIO_H_DAT_OUTPUT:

v_pIOPregs->GPHDAT=*(DWORD*)pBufln;//GPHDATSET(OUTPUT)alsoforFunctionalPinbreak;

caseIO_CTL_GPIO_H_UP:

v_pIOPregs->GPHUP=*(DWORD*)pBufln;//GPHUPSET

break;

caseIO_CTL_GPIO_J_CON:

v_plOPregs->GPJCON=*(DWORD*)pBufln;//GPJCONSET

break;

caseIO_CTL_GPIO_J_DAT_INPUT:

*(DWORD*)pBufOut=v_plOPregs->GPJDAT;//GPJDATSET(INPUT)alsoforFunctionalPinbreak;

caseIO_CTL_GPIO_J_DAT_OUTPUT:

v_pIOPregs->GPJDAT=*(DWORD*)pBufln;//GPJDATSET(OUTPUT)alsoforFunctionalPinbreak;

caseIO_CTL_GPIO_J_UP:

v_pIOPregs->GPJUP=*(DWORD*)pBufln;//GPJUPSET

break;

default:

break;

}

RETAILMSG(O,(TEXT("GPIO_Control:

Ioctlcode=Ox%x\r\n"),dwCode));

returnTRUE;

}

测试程序,封装了2个输入输出GPIO函数,调用十分方便:

#include"stdafx.h"

#include"Relay2.h"

#include"Relay2Dlg.h"

#include"GPIO_Driver.h"

#ifdef_DEBUG

#definenewDEBUG_NEW

#endif

DWORDRData,BUFCON,BUFOUT,BUFIN;structGPIO

{

DWORDGPIOCON;

DWORDGPIOIN;

DWORDGPIOOUT;

};

structGPIOGPA={gpacon,NULL,gpaout},

GPB={gpbcon,gpbin,gpbout},

GPC={gpccon,gpcin,gpcout},

GPD={gpdcon,gpdin,gpdout},

GPE={gpecon,gpein,gpeout},

GPF={gpfcon,gpfin,gpfout},

GPG={gpgcon,gpgin,gpgout},

GPH={gphcon,gphin,gphout},

GPJ={gpjcon,gpjin,gpjout};//defineandchooseGPIO

//CRelay2Dlg对话框

CRelay2Dlg:

:

CRelay2Dlg(CWnd*pParent/*=NULL*/)

:

CDialog(CRelay2Dlg:

:

IDD,pParent)

{

m_hlcon=AfxGetApp()->Loadlcon(IDR_MAINFRAME);

}

voidCRelay2Dlg:

:

DoDataExchange(CDataExchange*pDX)

{

CDialog:

:

DoDataExchange(pDX);

}

BEGIN_MESSAGE_MAP(CRelay2Dlg,CDialog)

#ifdefined(_DEVICE_RESOLUTION_AWARE)&&!

defined(WIN32_PLATFORM_WFSP)

ON_WM_SIZE()

#endif

〃}}AFX_MSG_MAP

0N_BN_CLICKED(IDC_BUTT0N1,&CRelay2Dlg:

:

OnBnClickedButton1)

0N_BN_CLICKED(IDC_BUTT0N2,&CRelay2Dlg:

:

OnBnClickedButton2)

END_MESSAGE_MAP()

//CRelay2Dlg消息处理程序

BOOLCRelay2Dlg:

:

OnlnitDialog()

{

CDialog:

:

OnlnitDialog();

//设置此对话框的图标。

当应用程序主窗口不是对话框时,框架将自动

//执行此操作

Setlcon(

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1