首页 新闻 工控搜 论坛 厂商论坛 产品 方案 厂商 人才 文摘 下载 展览
中华工控网首页
  P L C | 变频器与传动 | 传感器 | 现场检测仪表 | 工控软件 | 人机界面 | 运动控制
  D C S | 工业以太网 | 现场总线 | 显示调节仪表 | 数据采集 | 数传测控 | 工业安全
  电 源 | 嵌入式系统 | PC based | 机柜箱体壳体 | 低压电器 | 机器视觉
WinCE驱动中设备中断的处理
深圳市盈鹏飞科技有限公司
收藏本文     查看收藏
    因为BSP和WinCE系统,已经做了大量的工作,完成了所有底层的处理。所以我们仅调用几个api,就可以完成驱动程序对中断的处理。

    在WinCE中,中断被转换成为了一个事件。所以我们可以创建一个线程,该线程循环等待事件发生,一旦发生则去操作对应设备。这个线程被成为IST。整个过程如下:

在驱动的XXX_Init()中
1.创建一个事件

hEvent = CreateEvent(NULL, FALSE, FALSE, NULL);
2.获得sysIntr,硬件有一个中断号,如EINT0,等等,但该中断号并不是WinCE系统能识别的中断号,故要获取WinCE的系统中断号。
KernelIoControl(IOCTL_HAL_REQUEST_SYSINTR, &Irq, sizeof(UINT32), &sysIntr, sizeof(UINT32), NULL);
其中Irq为硬件中断号,如EINT0等等。
当调用完KernelIoControl函数后,硬件中断号对应的系统中断号,则会保存在sysIntr中。
3.将事件与中断号相连接
在连接前,先禁止该中断,连接后调用一次InterruptDone则会启动该中断。
InterruptDisable(sysIntr);
if(!InterruptInitialize(sysIntr, hEvent, NULL, 0) )
 goto error;
InterruptDone(sysIntr);
4.创建中断服务线程(IST)
hThread = CreateThread(NULL, 0, &IST, NULL, 0, NULL);
至此,就完成了有关设备中断的初始化操作。接下来实现创建中断服务线程即可
其样式如下,省略了对设备操作的代码。
DWORD IST(LPVOID param)
{
 DWORD we;
 while(hThread)
 {
  we = WaitForSingleObject(DPRAM.hEvent, INFINITE);
  ...;
  InterruptDone(sysIntr);
 }
 return ERROR_SUCCESS;
}
 

 

状 态: 离线

公司简介
产品目录

公司名称: 深圳市盈鹏飞科技有限公司
联 系 人: 李希岗
电  话: 0086-13602511395
传  真: 0755-82523175,82523176-819
地  址: 深圳市福田区福明路40号,雷圳大厦12A06
邮  编: 518033
主  页:
 
该厂商相关技术文摘:
WINCE下如何添加CPL应用程序
Wince sqlite3移植
EAC-C925开机画面实现手册
英贝德推出单板机产品软件升级解决方案(WinCE篇)
EP9315电路设计要点
Linux下创建和使用RamDisk的技巧
英贝德科技移植PPP大揭秘:PPP拨号在ARM2410平台上的移植
AT91SAM9263在人机界面方面的应用
详解WinCE下USB Host驱动开发(2)
详解WinCE下USB Host驱动开发(1)
Linux内核学习之BogoMIPS值的计算
更多文摘...
立即发送询问信息在线联系该技术文摘厂商:
用户名: 密码: 免费注册为中华工控网会员
请留下您的有效联系方式,以方便我们及时与您联络

关于我们 | 联系我们 | 广告服务 | 本站动态 | 友情链接 | 法律声明 | 不良信息举报
工控网客服热线:0755-86369299
版权所有 中华工控网 Copyright©2022 Gkong.com, All Rights Reserved