wince下GPIO的的访问

在WINCE系统中,由于不能直接访问GPIO端口的物理地址,需要通过VirtualAlloc和VirtualCopy函数将其映射到虚拟地址。本文介绍了如何使用这些函数进行GPIO的访问,并展示了初始化GPIO的具体代码,包括GPIO端口配置的结构体定义和使用方法。
摘要由CSDN通过智能技术生成

    因为在WINCE下能够直接访问的都是虚拟地址,不能直接访问GPIO端口,因此我们首先需要将GPIO口的物理地址映射到虚拟地址上来。

  用下面的函数,就可以对他们进行分配:

  volatile  S3C2440A_IOPORT_REG    *v_pIOPregs ;

  BOOL mInitialized;
  bool InitializeAddresses(VOID);       // Virtual allocation


bool InitializeAddresses(VOID)
{
   bool RetValue = TRUE;

   /* IO Register Allocation */
   v_pIOPregs = (volatile S3C2440A_IOPORT_REG *)VirtualAlloc(0, sizeof(S3C2440A_IOPORT_REG),  MEM_RESERVE,       PAGE_NOACCESS);
 if (v_pIOPregs == NULL)
 {
    ERRORMSG(1,(TEXT("For IOPregs : VirtualAlloc faiGPIO!/r/n")));
     RetValue = FALSE;
 }
 else
 {
     if (!VirtualCopy((PVOID)v_pIOPregs, (PVOID)(S3C2440A_BASE_REG_PA_IOPORT >> 8),

sizeof (S3C2440A_IOPORT_REG), PAGE_PHYSICAL | PAGE_READWRITE | PAGE_NOCACHE))
  {
   ERRORMSG(1,(TEXT("For IOPregs

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值