写WINCE 按键驱动

wdw1600 2009-02-12 10:33:08
现在要写一个WINCE按键驱动,6个按键占用6个外部中断。没做过不知道怎么下手,请大家给点指点建议,指个架构最好。我看了WINCE键盘驱动不过好像用不上。
...全文
1168 29 打赏 收藏 转发到动态 举报
写回复
用AI写文章
29 条回复
切换为时间正序
请发表友善的回复…
发表回复
iusarg 2009-02-18
  • 打赏
  • 举报
回复
楼上的方法值得一试,学习一下
xajhuang 2009-02-18
  • 打赏
  • 举报
回复
Drivers 目录下的 dir 文件看看有没有包含你驱动的目录名称
wdw1600 2009-02-18
  • 打赏
  • 举报
回复
我那个加方法据说是错误的,我新开的一贴上面说了我是怎么弄的。
现在我得重新弄
wdw1600 2009-02-17
  • 打赏
  • 举报
回复
哦,谢谢各位!
我现在是修改了CFW.C里面和ARMINIT.C里面有关部分,我就是把中断号从eint0改成int18了,结果没的反应,明天自己写个简单的驱动测试算了,不用他那个bsp里的,硬件差别大,他那个是电源按键驱动,有硬件模块支持的。
wdw1600 2009-02-17
  • 打赏
  • 举报
回复
呵呵,我今天也问了老师了改版的话键盘会不会变,他说不变了i/o够用。。。
今天我终于把gooogleman说的那个驱动弄成功了,以前问题出在我按键中断号和CS8900一样了,我把CS8900屏蔽了,我们没那个硬件。
不过我自己编的怎么都不行,就连KEY_INIT这个函数都没运行过,我程序在PB界面左边栏目里显示个(exclude build)
不晓得啥意思
AMOROUS 2009-02-17
  • 打赏
  • 举报
回复
9315本来有矩阵键盘接口,而且驱动也有键盘的驱动,所以我们直接改键盘表定义就行了,呵呵
gooogleman 2009-02-16
  • 打赏
  • 举报
回复
改动中断是要改动OAL的代码的,你的是4.2BSP,必须改。
jgj58 2009-02-16
  • 打赏
  • 举报
回复
楼主可以变换一下思路:不一定非要用中断实现,说实在用那么多中断怪可惜的~
扬创2440的开发板的键盘驱动用的是低级键盘钩子技术,非常简单使用,可以参考一下的
wdw1600 2009-02-15
  • 打赏
  • 举报
回复
我就是奇怪DLLENTRY函数不停的运行是什么意思
wdw1600 2009-02-15
  • 打赏
  • 举报
回复
哦,程序还是BSP里的程序,只是我把中断号改了,
gooogleman 2009-02-14
  • 打赏
  • 举报
回复
只给出结果,无法提示。
wdw1600 2009-02-14
  • 打赏
  • 举报
回复
大侠们,给点提示吧
wdw1600 2009-02-13
  • 打赏
  • 举报
回复
自己顶一下
xajhuang 2009-02-13
  • 打赏
  • 举报
回复
就是多占用了一个 IO。
xajhuang 2009-02-13
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 constantine 的回复:]
6个键你就用了6个中断,是不是浪费了点啊。
我们都是直接用iic接zlg7290做键盘,一个中断就够了,然后写个驱动读取键盘值,注册一个全局消息,通过全局消息发送给应用程序。
[/Quote]

还有一个跟节约成本的方法 可以把 6 个键连成一个 矩阵。 2 x 3 就行,然后把中断用或门并到一个中断上去,中断触发后就去查询矩阵,判断是那个键按下就行了。我就是这样做的。
gooogleman 2009-02-13
  • 打赏
  • 举报
回复
我觉得使用constantine老兄的这个方法好。

至于为什么要用虚拟地址嘛,说来话长,我以前发了基本ARM官文的电子书,讲得比较明白。
xajhuang 2009-02-13
  • 打赏
  • 举报
回复
给你个建议,要是你现在是 6 个按键接了 6 个中断的话,我觉得你完全不需要用中断,直接当普通 IO 查询状态就行了。这样更简单。
wdw1600 2009-02-13
  • 打赏
  • 举报
回复
谢谢楼上几位的释疑!虚拟地址我是知道的,就是不太清楚为什么要用,9楼解释的非常详细,thank you。
我们那个板子是老师昨年早就设计好了,反正外部中断也用不完。就没有扩展了。
PWRBTN那个文件夹找到了,里面是按键驱动。。。我以前不知道里面是按键驱动。thanks everybody。
constantine 2009-02-13
  • 打赏
  • 举报
回复
6个键你就用了6个中断,是不是浪费了点啊。
我们都是直接用iic接zlg7290做键盘,一个中断就够了,然后写个驱动读取键盘值,注册一个全局消息,通过全局消息发送给应用程序。
xajhuang 2009-02-13
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 gooogleman 的回复:]
wince下都是虚拟地址。不用的话不能正确访问。
[/Quote]
估计楼主不了解什么叫虚地址,借用楼上的话,我给你一个形象的解释。就是 WinCE 用了一种方式把寄存器的地址修改过了,比如把0x3000000修改成0x80000000,原来芯片寄存器的地址就不能再使用了。要用的话就需要用 WinCE 提供的函数去计算出对应的地址,就是 VirtualAlloc VirtualCopy VirtualFree 这类的东西。
加载更多回复(9)

19,502

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
  • 嵌入开发(WinCE)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧