|
提示找不到这个头文件是怎么回事??
#include
#include
#include
#include
#include
#include
#include
static volatile BULVERDE_GPIO_REG *g_pGPIORegs = NULL; // PXA27x GPIO registers
BOOL WINAPI
GPI_DllEntry(
HANDLE hInstDll,
DWORD dwReason,
LPVOID lpvReserved
)
{
return 1;
}
DWORD GPI_Init(LPCTSTR pContext,LPCVOID lpvBusContext)
{
PHYSICAL_ADDRESS RegPA;
if(g_pGPIORegs == NULL)
{
RegPA.QuadPart = BULVERDE_BASE_REG_PA_GPIO;
g_pGPIORegs = (volatile BULVERDE_GPIO_REG *) MmMapIoSpace(RegPA, 0x400, FALSE);
}
return 1;
}
DWORD GPI_Open (DWORD dwData, DWORD dwAccess, DWORD dwShareMode) {
return (1);
}
BOOL GPI_Close(DWORD dwData) {return (TRUE);}
DWORD GPI_Write(DWORD dwData, LPCVOID pBuf, DWORD Len)
{
BYTE* pdatabuf;
BYTE gpioNum;
BYTE gpioState;
pdatabuf = (BYTE*)pBuf;
gpioNum = *pdatabuf++;
gpioState = *pdatabuf;
RETAILMSG(1,(TEXT("gpioNum : %d\r\n"),gpioNum));
RETAILMSG(1,(TEXT("gpioState : %d\r\n"),gpioState));
if(gpioNum == 3 || gpioNum == 4 || gpioNum == 9) //这里可以选择你要用的gpio口 GPIO0-31由寄存器GPDR0 GPSR0 GPCR0控制
{ //GPIO32-63 由GPDR1...控制 GPIO64-95由GPDR2...控制
if(gpioState == 1) //GPIO96- 由GPDR3...控制
{
g_pGPIORegs->GPDR0 |= (1<
g_pGPIORegs->GPSR0 |= (1<
}
else
{
g_pGPIORegs->GPDR0 |= (1<
g_pGPIORegs->GPCR0 |= (1<
}
}
else if(gpioNum == 101 || gpioNum ==102 || gpioNum == 103 || gpioNum == 104)
{
if(gpioState == 1)
{
g_pGPIORegs->GPDR3 |= (1<<(gpioNum % 32));
g_pGPIORegs->GPSR3 |= (1<<(gpioNum % 32));
}
else
{
g_pGPIORegs->GPDR3 |= (1<<(gpioNum % 32));
g_pGPIORegs->GPCR3 |= (1<<(gpioNum % 32));
}
}
return 1;
}
DWORD GPI_Read(DWORD dwData, LPVOID pBuf, DWORD Len)
{
BYTE* pdatabuf;
BYTE gpioNum;
pdatabuf = (BYTE*)pBuf;
gpioNum = *pdatabuf++;
if(gpioNum == 3 || gpioNum ==4 || gpioNum == 9)
{
*pdatabuf =(g_pGPIORegs->GPLR0 & (1<
}
if(gpioNum == 101 || gpioNum ==102 || gpioNum == 103 || gpioNum == 104)
{
*pdatabuf =(g_pGPIORegs->GPLR3 & (1<<(gpioNum % 32)))?1:0;
}
RETAILMSG(1,(TEXT("state: %d\r\n"),*pdatabuf));
return 1;
}
BOOL GPI_Deinit(DWORD dwData)
{
if(g_pGPIORegs)
g_pGPIORegs = NULL;
return 1;
} |
|