wince下Gpio 驱动程序
【转】wince下Gpio 驱动程序
分别使用VirtualAlloc和VirtualCopy这两个函数来完成映射!
这两个函数的原型:
LPVOID VirtualAlloc( LPVOID lpAddress, DWORD dwSize,
DWORD flAllocationType, DWORD flProtect );
BOOL VirtualCopy( LPVOID lpvDest, LPVOID lpvSrc, DWORD cbSize, DWORD fdwProtect );
如果这两个函数执行成功,哪么VirtualAlloc将返回一个指针,使用这个指针我们就可以直接访问GPIO,通过读写相关地址寄存器,来控制GPIO端口!
v_pIOPregs = (volatile IOPreg *)VirtualAlloc(0, sizeof(IOPreg), MEM_RESERVE, PAGE_NOACCESS);
if (v_pIOPregs == NULL){
RetValue = FALSE;
}
else {
if (!VirtualCopy((PVOID)v_pIOPregs, (PVOID)(IOP_BASE), sizeof(IOPreg), PAGE_READWRITE | PAGE_NOCACHE)) {
RetValue = FALSE;
}
}
if (!RetValue){
//PIO_InitializeAddresses - Failed !!
if (v_pIOPregs){
VirtualFree((PVOID) v_pIOPregs, 0, MEM_RELEASE);
}
v_pIOPregs = NULL;
}
//else RETAILMSG (1, (TEXT("::: PBT_InitializeAddresses - Success\r\n") ));
return(RetValue);
v_pIOPregs是一个IOPreg结构,在s2410.h中定义,
//
// Registers : I/O port
#define IOP_BASE 0xB1600000 // 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;
unsigned int rGSTATUS1; // B0
}IOPreg;
wince下Gpio 驱动程序相关推荐
- WinCE下光电编码器的驱动程序设计
原文:http://article.ednchina.com/Embedded/20071209103917.htm 来源:中电网 | 作者:杨振坤 甘朝晖 蒋旻 引言 近年来,嵌入式技术发展迅速,嵌 ...
- WinCE下的GPIO中断的处理
在我所负责的音频驱动部分代码中,采用了PXA270的GPIO34来检测Headphone的插入与拔出.原驱动部分有个BUG,即当耳机插入以后,耳机和喇叭同时在响,很明显没有对耳机插入事件做出响应.所以 ...
- wince下sources\sources.cmn\Makefile.def的相关作用
1:首先是Makefile.def: ---------------------------------------- 在所有驱动的makefile中有!INCLUDE $(_MAKEENVROOT) ...
- 记WinCE下调试SIM900 GSM module
记WinCE下调试SIM900 GSM module 近几天在调试sim900,把遇到的一些问题总结下吧. 一.一些引脚的说说明. Sim900有几个引脚需要了解下. 1. CTS.RTS 由于使用 ...
- 【嵌入式】非操作系统下GPIO口控制器及LED灯编程
非操作系统下GPIO口控制器及LED灯编程 GPIO控制器 概述 内部架构 端口寄存器 GPIO控制寄存器 GPIO数据寄存器 GPIO上拉寄存器 非操作系统LED灯闪烁 开发步骤 开发板上二极管 读 ...
- STM32低功耗模式下GPIO如何配置最节能?
目录 1.将未使用的GPIO 配置为模拟输入模式 2.调节GPIO 速度 3.GPIO不使用时禁用寄存器时钟 4.避免悬空未使用的引脚 STM32低功耗模式下GPIO如何配置最节能,这里总结了一下四点 ...
- WinCE下串口虚拟软件
前段时间,介绍了一个WinCE下的串口调试软件Serial Splitter Mobile 3.2.它的主要功能是将一个物理串口克隆成N个,供不同的应用程序使用,以监视物理串口收发的数据.今天介绍一个 ...
- 【WinCE】SD card技术了解并WINCE下SDHC驱动开发(updated)
SD Card Driver on ADS Summary 了解SD card. 1 WinCE 5.0下SD Stack. 6 Bus Driver 7 Host Controller Driver ...
- Linux下触摸屏驱动程序分析
[摘要: 本文以 linux 3.5--Exynos4412仄台,剖析 触摸屏 驱动焦点内容.Linux下触摸屏驱动(以ft5x06_ts为例)须要懂得以下学问: 1. I2C协定 2. Exynos ...
最新文章
- 1115 Counting Nodes in a BST
- java中静态变量,静态代码块,静态方法,实例变量,匿名代码块的加载顺序
- Linux下I/O多路转接之select --fd_set
- Elasticsearch如何做到数十亿数据查询毫秒级响应?
- jQuery.noConflict() 解决冲突 原理深入
- 你最喜欢哪款游戏的界面风格,为什么?
- primefaces教程_PrimeFaces教程
- PostgreSQL bloat 检查与处理
- ENVI5.3安装教程(含软件下载)
- 数学建模学习:灰色关联分析
- krc转换lrc java_win7将酷狗音乐krc歌词转换成lrc歌词文件的方法
- linux 删除开机密码,6种清除开机密码方法,总有一个适合你
- Git代码reset回滚无效解决
- 修改win7开机登陆界面背景图片
- 安卓Android Studio Button按钮background不生效无效问题
- 【笔记】案例研究(红酒和白酒)
- 【必备知识】:线激光条纹中心线提取算法导读
- c语言程序写入,设计c语言程序并写入单片机
- w10网络里面没有计算机,win10计算器没有了怎么办_w10系统自带的计算器没有了的解决方法...
- <数据结构>创建一个有理数类
热门文章
- javascript for in,for each,for循环遍历区别
- hibernate基于单表curd
- 1049. 数列的片段和(20)
- html怎样调取css,css怎么调用?
- 【C++深度剖析教程39】实现C++数组类模板
- 【数据结构学习之完全从零实现所有数据结构的代码编写之一】泛型编程简介
- 移植uboot之修改代码支持NorFlash记录
- 【C++深度剖析教程5】C++中类的静态成员函数
- 2019年1月16日【第三天学习】
- 753 Cracking the Safe