📄 gpio.cpp
字号:
#include <hwdefs.h>
#include <windows.h>
#include <haluser.h>
#include "gpio.h"
//DWORD g_GPIOAinten;
//DWORD g_GPIOPaddr;
BOOL APIENTRY DllMain( HANDLE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
return TRUE;
}
DWORD GIO_Init (DWORD dwContext)
{
DWORD dwRet = 1;
HalWriteCommonReg( CSC_DEVCFG, DEVCFG_HONIDE | DEVCFG_GONIDE | DEVCFG_EONIDE , DEVCFG_HONIDE | DEVCFG_GONIDE | DEVCFG_EONIDE );
RETAILMSG(1,(TEXT("INIT THE GPIO\r\n")));
return dwRet;
}
BOOL GIO_Deinit (DWORD hDeviceContext)
{
BOOL bRet = TRUE;
return bRet;
}
DWORD GIO_Open (DWORD hDeviceContext,DWORD AccessCode, DWORD ShareMode)
{
DWORD dwRet = 1;
//RETAILMSG(1,(TEXT("OPEN THE GPIO\r\n")));
return dwRet;
}
BOOL GIO_Close (DWORD hOpenContext)
{
BOOL bRet = TRUE;
//RETAILMSG(1,(TEXT("CLOSE THE GPIO\r\n")));
return bRet;
}
BOOL GIO_IOControl (DWORD hOpenContext,
DWORD dwCode,
PBYTE pBufIn,
DWORD dwLenIn,
PBYTE pBufOut,
DWORD dwLenOut,
PDWORD pdwActualOut)
{
BOOL bRet = TRUE;
DWORD dwPHDR,dwBufIn,dwPHDDR;
dwPHDR = *GPIO_PHDR;
dwPHDDR = *GPIO_PHDDR;
switch(dwCode)
{
case IOCTL_GPIO_SET_INPUT:
dwBufIn = (DWORD)(*pBufIn) & 0xff;
dwBufIn &= 0xfc;
*GPIO_PHDDR &= ~dwBufIn;
//RETAILMSG(1,(TEXT("GPIO_SET_INPUT\r\n")));
break;
case IOCTL_GPIO_SET_OUTPUT:
dwBufIn = (DWORD)(*pBufIn) & 0xff;
*GPIO_PHDDR |= (dwBufIn | (dwPHDDR & 0x3));
//RETAILMSG(1,(TEXT("GPIO_SET_OUTPUT\r\n")));
break;
case IOCTL_GPIO_SET_HIGH:
dwBufIn = (DWORD)(*pBufIn) & 0xff;
*GPIO_PHDR |= (dwBufIn | (dwPHDR & 0x3));
//RETAILMSG(1,(TEXT("GPIO_SET_HIGH\r\n")));
break;
case IOCTL_GPIO_SET_LOWER:
dwBufIn = (DWORD)(*pBufIn) & 0xff;
dwBufIn &= 0xfc;
*GPIO_PHDR &= ~dwBufIn;
//RETAILMSG(1,(TEXT("GPIO_SET_LOWER\r\n")));
break;
case IOCTL_GET_GPIO_VALUE:
dwPHDR = *GPIO_PHDR;
*pBufOut = (UCHAR)(dwPHDR);
*pdwActualOut = 1;
//RETAILMSG(1,(TEXT("GET_GPIO_VALUE\r\n")));
break;
default:
bRet = FALSE;
}
return bRet;
}
void GIO_PowerDown (DWORD hDeviceContext)
{
return;
}
void GIO_PowerUp (DWORD hDeviceContext)
{
return;
}
DWORD GIO_Read (DWORD hOpenContext,LPVOID pBuffer,DWORD Count)
{
DWORD dwRet = 0;
return dwRet;
}
DWORD GIO_Seek (DWORD hOpenContext,long Amount,DWORD Type)
{
DWORD dwRet = 0;
return dwRet;
}
DWORD GIO_Write (DWORD hOpenContext,LPCVOID pSourceBytes,DWORD NumberOfBytes)
{
DWORD dwRet = 0;
return dwRet;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -