2440 WinCE操作GPIO
2010-07-29 17:06
176 查看
Windows CE系统将GPIO的实地址(例如2440的GPIO的基地址为0x56000000)映射到虚拟地址空间(GPIO对应为0xB1600000),这 样,通过对这段虚拟地址空间的操作,就能够完成对GPIO或者其他片内资源的控制、输入输出工作。要操作一个平台的GPIO,在其对应BSP中按照基地址,找到虚拟地址,并且找到方便操作这个地址的数据结构就可以了,关键函数就是 VirtualAlloc和VirtualCopy。下面以操作Samsung S3C2440的GPIO为例,讲述这个步骤:
1.首先在BSP中的s2440.h文件,找到虚拟地址映射以及操作GPIO的寄存器结构体(这个在自己制作一些特殊设备的BSP时,会依据需要而发生更改)
@written by .cpp
百度空间:http://hi.baidu.com/anglecloudy
博客园:http://www.cnblogs.com/dotcpp
1.首先在BSP中的s2440.h文件,找到虚拟地址映射以及操作GPIO的寄存器结构体(这个在自己制作一些特殊设备的BSP时,会依据需要而发生更改)
二、因为我用的mini2440开发板的GPB0接在蜂鸣器上,所以我以操作GPB0为例编写代码。这样给GPB0一个高电平,那么蜂鸣器就会响,反之蜂鸣器就会停止发声 #ifdef __cplusplus extern "C" { #endif BOOL VirtualCopy( PVOID, PVOID, DWORD, DWORD ); #ifdef __cplusplus } #endif void GPIO() //通过GPIO控制蜂鸣器 { volatile IOPreg *v_pIORegs; v_pIORegs = (volatile IOPreg *)VirtualAlloc(0, sizeof(IOPreg), MEM_RESERVE, PAGE_NOACCESS); if(v_pIORegs) { if(VirtualCopy((PVOID)v_pIORegs, (PVOID)IOP_BASE, sizeof(IOPreg), PAGE_READWRITE | PAGE_NOCACHE)) { v_pIORegs->rGPBCON = 1; //将GPB0设置为OUTPUT v_pIORegs->rGPBDAT = 0x3ff; //设置为高电平,蜂鸣器发声 Sleep(3000); v_pIORegs->rGPBDAT = 0; //恢复为低电平,蜂鸣器停止发声 } VirtualFree((LPVOID)v_pIORegs, 0, MEM_RELEASE); v_pIORegs = NULL; } }
@written by .cpp
百度空间:http://hi.baidu.com/anglecloudy
博客园:http://www.cnblogs.com/dotcpp
相关文章推荐
- LINUX 2440-GPIO操作
- wince下操作GPIO口
- wince操作GPIO口(写操作)
- 用ARM9 2440的GPIO口实现与温湿度传感器(AM2302)的单总线通信! WINCE 分享一下心得
- LINUX 2440-GPIO操作 .
- JZs3c2440裸板程序GPIO操作总结
- wince 蓝牙 操作 搜索蓝牙设备 建立连接 建立虚拟串口 MFC
- Raspberry PI上操作GPIO(GPIO编程)
- Linux下用文件IO的方式操作GPIO(/sys/class/gpio)
- wince 5.0 .2440 5.0BSP的中断过程(作者:wogoyixikexie@gliet)
- wince 5.0 .2440 5.0BSP的中断过程
- WinCE文件基本操作
- wince下ini文件操作
- wince 的GPIO口的简单流驱动的编写规范
- /sys/class/gpio 文件接口操作IO端口(s3c2440)
- WinCE 文件操作总结
- WINCE下对文件夹的操作
- 教大家如何在dragonboard410c 上直接操作GPIO操作设备
- 嵌入式系统学习(十)-通过直接配置寄存器操作GPIO
- 树莓派学习笔记——Shell脚本操作GPIO