sunignol
驱动牛犊
驱动牛犊
  • 注册日期2007-06-12
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分290分
  • 威望30点
  • 贡献值0点
  • 好评度29点
  • 原创分0分
  • 专家分0分
阅读:1954回复:6

有谁确切地测试过2410官方评估板的WINCE键盘驱动吗

楼主#
更多 发布于:2007-07-17 14:51
官方评估板使用的SYMTECH的某SPI芯片做键盘电路
我用BSP里的驱动修改
硬件专门针对最小软件改动设计了
驱动屡改不成
一直改到KeybdPdd_GetEventEx2里直接ui8ScanCode=0x0了
触发EINT1依然没有响应
不得不开始怀疑原驱动本身就不行了
sunignol
驱动牛犊
驱动牛犊
  • 注册日期2007-06-12
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分290分
  • 威望30点
  • 贡献值0点
  • 好评度29点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2007-07-17 14:55
WINCE的键盘驱动
一堆文件是怎么联系到一起的完全看不出来
反正用来做仪器
始终只运行一个软件
请教下牛人们
是不是直接软件里设置中断、直接访问硬件,做起来要简单得多呢
wikee
驱动小牛
驱动小牛
  • 注册日期2003-02-25
  • 最后登录2009-02-21
  • 粉丝0
  • 关注0
  • 积分355分
  • 威望108点
  • 贡献值0点
  • 好评度104点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2007-07-17 15:52
刚做完键盘这一块。楼主看看我前面的一个帖子,应该有用。

是否产生中断,跟键盘驱动不大,顶多是在POWERON函数中初始化一下端口和中断方式。这个初始化也可以放在OEM初始化函数中。

注意的是,如果你其他驱动用到了EINT1这个端口,必须修改其他驱动的内容,使之不对该端口做改动!!!你可以全部搜索查找代码找到使用到该端口的地方。

对中断响应的是HAL\ARM\armint.c文件。查到EINT1分支,看看是否返回的是SYSINTR_KEYBOARD,如果不是则修改。之后还要修改cfw.C中各处对SYSINTR_KEYBOARD处理的分支,修改为对EINT1的处理。

这样应该有中断响应了。
wikee
驱动小牛
驱动小牛
  • 注册日期2003-02-25
  • 最后登录2009-02-21
  • 粉丝0
  • 关注0
  • 积分355分
  • 威望108点
  • 贡献值0点
  • 好评度104点
  • 原创分0分
  • 专家分0分
地板#
发布于:2007-07-17 15:56
楼主可能想在应用程序中对键盘操作,这样不是不行。只是你还需要提供一种方法去操作WINCE,打开你的应用程序来运行。除非你的硬件有触摸屏或者设置应用程序自动运行。
sunignol
驱动牛犊
驱动牛犊
  • 注册日期2007-06-12
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分290分
  • 威望30点
  • 贡献值0点
  • 好评度29点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2007-07-17 16:05
引用第2楼wikee于2007-07-17 15:52发表的  :
刚做完键盘这一块。楼主看看我前面的一个帖子,应该有用。

是否产生中断,跟键盘驱动不大,顶多是在POWERON函数中初始化一下端口和中断方式。这个初始化也可以放在OEM初始化函数中。

注意的是,如果你其他驱动用到了EINT1这个端口,必须修改其他驱动的内容,使之不对该端口做改动!!!你可以全部搜索查找代码找到使用到该端口的地方。
.......

恩我先看看你的帖子
EINT1是BSP对应官方硬件的外中断
我在POWERON中设置好了的:
    v_pIOPregs->rEXTINT0 &= ~(0x7 << 4);    // Clear EINT1
    v_pIOPregs->rEXTINT0 |= (0x2 << 4);     // fallig edge triggered for EINT1
真是难受啊
改了N次
每次都觉得原理没错
每次又被现实无情地打击
sunignol
驱动牛犊
驱动牛犊
  • 注册日期2007-06-12
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分290分
  • 威望30点
  • 贡献值0点
  • 好评度29点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2007-07-17 16:10
wikee
你看下我以前发的两个求助贴,里面写了我修改的文件列表
当时想用EINT0,后来自己做板子的时候用了EINT1
http://bbs.driverdevelop.com/htm_data/48/0706/102704.html
http://bbs.driverdevelop.com/htm_data/48/0706/103039.html (这个修改地方更清晰些)
麻烦你看看修改的地方和你的是不是一样
有什么漏掉的地方
wikee
驱动小牛
驱动小牛
  • 注册日期2003-02-25
  • 最后登录2009-02-21
  • 粉丝0
  • 关注0
  • 积分355分
  • 威望108点
  • 贡献值0点
  • 好评度104点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2007-07-17 16:24
大概看了一下。你还是要找找EINT1的内容看看。也就是GPF1引脚。
好像你根本没有去配置GPF1引脚为中断。

POWER.C里面的函数是进入省电模式时使用的。应该不需要修改先。
你可以在HzhInitPIO()函数中加上对键盘控制有关的端口的配置。具体看看2410的DATASHEET有关中断和GPIO部分。

还有你可以在ARMINT.C中EINT1处放一条DEBUG信息输出,来确认是否收到中断信号了。

祝你好运!
游客

返回顶部