2通过Kn控制LEDn(中断)说明文档_第1页
2通过Kn控制LEDn(中断)说明文档_第2页
2通过Kn控制LEDn(中断)说明文档_第3页
2通过Kn控制LEDn(中断)说明文档_第4页
2通过Kn控制LEDn(中断)说明文档_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

功能描述 按下 Kn 的时候 LEDn 亮 n 1 4 一 驱动程序 KeyLed cpp include include include include include include pmplatform h include Pkfuncs h include s2440 h volatile IOPreg s2440IOP IOPreg IOP BASE volatile INTreg s2440INT INTreg INT BASE HANDLE KeyThread HANDLE KeyEvent UINT32 g KeySysIntr 4 void Virtual Alloc Virtual allocation DWORD UserKeyProcessThread void const TCHAR szevtUserInput L FriendlyARM ButtonEvent DWORD UserKeyProcessThread void DWORD IRQ 创建一个事件 KeyEvent CreateEvent NULL FALSE FALSE NULL if KeyEvent RETAILMSG 1 TEXT ERROR KEL Failed to create event r n return FALSE 将物理中断号转换为逻辑中断号 IRQ 物理中断号 g KeySysIntr 逻辑中断号 IRQ 36 if KernelIoControl IOCTL HAL REQUEST SYSINTR return FALSE IRQ 39 if KernelIoControl IOCTL HAL REQUEST SYSINTR return FALSE IRQ 41 if KernelIoControl IOCTL HAL REQUEST SYSINTR return FALSE IRQ 42 if KernelIoControl IOCTL HAL REQUEST SYSINTR return FALSE 通知系统使能这个中断 g KeySysIntr 并且当这个中断产生时产生一个事件 if InterruptInitialize g KeySysIntr 0 KeyEvent NULL 0 RETAILMSG 1 TEXT Fail to initialize key interrupt event r n return FALSE if InterruptInitialize g KeySysIntr 1 KeyEvent NULL 0 RETAILMSG 1 TEXT Fail to initialize key interrupt event r n return FALSE if InterruptInitialize g KeySysIntr 2 KeyEvent NULL 0 RETAILMSG 1 TEXT Fail to initialize key interrupt event r n return FALSE if InterruptInitialize g KeySysIntr 3 KeyEvent NULL 0 RETAILMSG 1 TEXT Fail to initialize key interrupt event r n return FALSE while 1 等待中断发生 WaitForSingleObject KeyEvent INFINITE const char nIndex 0 3 5 6 const char nIndex2 5 6 7 8 扫描 Kn 1 4 的状态并赋给 LEDn 1 4 for int i 0 irGPGDAT K1 设置为输入 上升沿或者下降沿都触发 s2440IOP rGPGCON s2440IOP rGPGCON GPB8 OUTPUT return TRUE DWORD KEL Init DWORD dwContext DWORD threadID thread ID RETAILMSG 1 TEXT KEY Init r n 申请内存 Virtual Alloc 初始化寄存器 KeyGpioInit 创建线程 KeyThread CreateThread NULL 0 LPTHREAD START ROUTINE UserKeyProcessThread 0 0 if NULL KeyThread RETAILMSG 1 TEXT ERROR failed to Create Key Thread r n return FALSE return TRUE DWORD KEL Open DWORD hDeviceContext DWORD AccessCode DWORD ShareMode RETAILMSG 1 TEXT KEYLED KEL Open ret is r n return TRUE BOOL KEL Close DWORD hOpenContext RETAILMSG 1 TEXT KEYLED KEL Close ret is r n return TRUE void KEL PowerDown DWORD hDeviceContext void KEL PowerUp DWORD hDeviceContext DWORD KEL Read DWORD hOpenContext LPVOID pBuffer DWORD Count RETAILMSG 1 TEXT KEYLED KEL Read ret is r n return 1 DWORD KEL Seek DWORD hOpenContext long Amount DWORD Type RETAILMSG 1 TEXT KEYLED KEL Seek ret is r n return 0 DWORD KEL Write DWORD hOpenContext LPCVOID pSourceBytes DWORD NumberOfBytes RETAILMSG 1 TEXT KEYLED KEL Write ret is r n return 0 二 把驱动程序添加到 BSP 中编译 1 在 mini2440 Src Drivers 下建立 KeyLed 目录 并在 dirs 文件中加入此目录 使系 统编译 bsp 的时候可以编译这个文件 2 为驱动创建 Makefile 文件 DO NOT EDIT THIS FILE Edit sources if you want to add a new source file to this component This file merely indirects to the real make file that is shared by all the components of Peg INCLUDE MAKEENVROOT makefile def 3 为驱动创建 source 文件 if 0 File sources Author fire Copyright c 1995 2002 Microsoft Corporation All rights reserved endif RELEASETYPE PLATFORM TARGETNAME KEYLED TARGETTYPE DYNLINK DLLENTRY DllEntry TARGETLIBS COMMONSDKROOT lib CPUINDPATH coredll lib MSC WARNING LEVEL MSC WARNING LEVEL W3 WX INCLUDES TARGETPLATROOT inc COMMONOAKROOT inc PUBLICROOT common oak inc PUBLICROOT common sdk inc PUBLICROO T common ddk inc inc SOURCES KeyLed cpp 4 编写 Keyled def 导出 dll 符号 Windows CE Key Driver Written by flyingfingers LIBRARY KeyLed EXPORTS KEL Close KEL Deinit KEL Init KEL IOControl KEL Open KEL PowerDown KEL PowerUp KEL Read KEL Seek KEL Write 5 把驱动加入内核 在配置文件 platform bib 中加入以下内容 不是很明白为什么要加入 IF BSP NOKEL IF BSP NOKEL keyled dll FLATRELEASEDIR keyled dllNK SH ENDIF BSP NOKEL 6 把驱动加入注册表 在注册表文件 platform reg 中加入以下内容 IF BSP NOKEL HKEY LOCAL MACHINE Drivers BuiltIn keyled Prefix KEL Dll keyled dll

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论