s3c2440在wince下 GPIO的操作方法

头文件


#ifdef __cplusplus
extern "C"
{
#endif
BOOL VirtualCopy( LPVOID, LPVOID, DWORD, DWORD );
#ifdef __cplusplus
}
#endif

// Registers : I/O port
//

#define IOP_BASE      0xB1600000 // 0x56000000
#define IOP_PHY_BASE 0x56000000
typedef struct  {
		unsigned int  rGPACON;			// 00
		unsigned int  rGPADAT;
		unsigned int  rPAD1[2];
    
		unsigned int  rGPBCON;			// 10
		unsigned int  rGPBDAT;
		unsigned int  rGPBUP;
		unsigned int  rPAD2;
    
		unsigned int  rGPCCON;			// 20
		unsigned int  rGPCDAT;
		unsigned int  rGPCUP;
		unsigned int  rPAD3;
    
		unsigned int  rGPDCON;			// 30
		unsigned int  rGPDDAT;
	    unsigned int  rGPDUP; 
	    unsigned int  rPAD4;
    
		unsigned int  rGPECON;			// 40
		unsigned int  rGPEDAT;
		unsigned int  rGPEUP;
		unsigned int  rPAD5;
    
		unsigned int  rGPFCON;			// 50
		unsigned int  rGPFDAT;
		unsigned int  rGPFUP; 
		unsigned int  rPAD6;
    
		unsigned int  rGPGCON;			// 60
		unsigned int  rGPGDAT;
		unsigned int  rGPGUP; 
		unsigned int  rPAD7;
    
		unsigned int  rGPHCON;			// 70
		unsigned int  rGPHDAT;
		unsigned int  rGPHUP; 
		unsigned int  rPAD8;
    
		unsigned int  rMISCCR;			// 80
		unsigned int  rDCKCON;		
		unsigned int  rEXTINT0;
		unsigned int  rEXTINT1;		
		unsigned int  rEXTINT2;			// 90
		unsigned int  rEINTFLT0;
		unsigned int  rEINTFLT1;
		unsigned int  rEINTFLT2;
		unsigned int  rEINTFLT3;		// A0
		unsigned int  rEINTMASK;
		unsigned int  rEINTPEND;
		unsigned int  rGSTATUS0;		// AC
		unsigned int  rGSTATUS1;		// B0
		unsigned int  rGSTATUS2;		// B4 ;;; SHL
		unsigned int  rGSTATUS3;		// B8
		unsigned int  rGSTATUS4;		// BC
	
		unsigned int  rFLTOUT;			// C0
		unsigned int  rDSC0;
		unsigned int  rDSC1;
		unsigned int  rMSLCON;

		unsigned int  rGPJCON;			// D0
		unsigned int  rGPJDAT;
		unsigned int  rGPJUP;
		unsigned int  rPAD9;
	
}IOPreg;  


volatile IOPreg *v_pIOPRegs;




主程序

 

#include "stdafx.h"
#include "head.h"
#include "afxwin.h"

int WINAPI WinMain(	HINSTANCE hInstance,
					HINSTANCE hPrevInstance,
					LPTSTR    lpCmdLine,
					int       nCmdShow)
{
 	// TODO: Place code here.

	v_pIOPRegs = (volatile IOPreg*)VirtualAlloc(0, sizeof(IOPreg), MEM_RESERVE, PAGE_NOACCESS);
	if (v_pIOPRegs == NULL)
	{
		DEBUGMSG (1,(TEXT("v_pIOPRegs is not allocated ")));
		return TRUE;
	}
	if (!VirtualCopy((PVOID)v_pIOPRegs, (PVOID)IOP_BASE, sizeof(IOPreg), PAGE_READWRITE|PAGE_NOCACHE))
	{
		DEBUGMSG (1,(TEXT("v_pIOPRegs is not mapped ")));
		return TRUE;
	}
	DEBUGMSG (1,(TEXT("v_pIOPRegs is mapped to %x "), v_pIOPRegs));


//===========================================================================================================GPIO 操作
//for example
//	v_pIOPRegs->rGPFCON = 0x5555;
//	v_pIOPRegs->rGPFDAT = 0xff;
//还有一些移位操作来设置GPIO,具体操作方法看C语言方面的书籍吧
//=========================================================================================================== 
	return 0;
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值