wchsuperman
驱动牛犊
驱动牛犊
  • 注册日期2004-03-02
  • 最后登录2005-11-26
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2257回复:3

[求助]wince里到底有多少可用的中断?

楼主#
更多 发布于:2004-07-26 18:02
我是一个刚刚接触的wince新手,对于其中的中断有一些困惑,似乎wince中可用的中断号十分有限,这是我从一个文件中截取的片断:
SYSINTR_NOP         EQU    0
SYSINTR_RESCHED     EQU 1
SYSINTR_BREAK    EQU 2

SYSINTR_DEVICES     EQU 8
SYSINTR_PROFILE     EQU SYSINTR_DEVICES+1
SYSINTR_TIMING      EQU SYSINTR_DEVICES+2
SYSINTR_RTC_ALARM   EQU SYSINTR_DEVICES+5

SYSINTR_FIRMWARE    EQU SYSINTR_DEVICES+8
SYSINTR_MAX_DEVICES EQU     32
SYSINTR_MAXIMUM     EQU SYSINTR_DEVICES+SYSINTR_MAX_DEVICES

;
; Define OAL-specific interrupt Id's below. Range:[SYSINTR_FIRMWARE -> SYSINTR_MAXIMUM]
;
SYSINTR_KEYBOARD        EQU SYSINTR_FIRMWARE+0
SYSINTR_POWER           EQU SYSINTR_FIRMWARE+1
SYSINTR_IDE             EQU SYSINTR_FIRMWARE+2
SYSINTR_SERIAL          EQU SYSINTR_FIRMWARE+3
SYSINTR_AUDIO           EQU SYSINTR_FIRMWARE+4
SYSINTR_PCMCIA_STATE    EQU     SYSINTR_FIRMWARE+5
SYSINTR_PCMCIA_EDGE     EQU     SYSINTR_FIRMWARE+6
SYSINTR_PCMCIA_LEVEL    EQU     SYSINTR_FIRMWARE+7
SYSINTR_PARALLEL        EQU        SYSINTR_FIRMWARE+8
SYSINTR_IR              EQU SYSINTR_FIRMWARE+9
SYSINTR_MOUSE           EQU SYSINTR_FIRMWARE+10
SYSINTR_OHCI_MDD        EQU SYSINTR_FIRMWARE+11
SYSINTR_OHCI_PDD        EQU        SYSINTR_FIRMWARE+12
SYSINTR_USB_CLIENT      EQU     SYSINTR_FIRMWARE+13
SYSINTR_VTUNEPMU        EQU         SYSINTR_FIRMWARE+14
SYSINTR_SDMMC           EQU         SYSINTR_FIRMWARE+15
SYSINTR_SERIAL2         EQU         SYSINTR_FIRMWARE+16
SYSINTR_ITE8152 EQU  SYSINTR_FIRMWARE+17
SYSINTR_PCIA EQU  SYSINTR_FIRMWARE+18
SYSINTR_PCIB EQU  SYSINTR_FIRMWARE+19
SYSINTR_PCIC EQU  SYSINTR_FIRMWARE+20
SYSINTR_PCID EQU  SYSINTR_FIRMWARE+21
SYSINTR_SERIAL3         EQU       SYSINTR_FIRMWARE+22

SYSINTR_TOUCH EQU  SYSINTR_FIRMWARE+24 ;Wouldn't work.
SYSINTR_TOUCH_CHANGED   EQU  SYSINTR_FIRMWARE+25
END
其中的大部分中断都被硬件使用了,难道就没有纯软中断吗?希望知道的大侠指点迷津,不甚感激!
wxl_50685330
论坛版主
论坛版主
  • 注册日期2002-11-19
  • 最后登录2018-09-25
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望521点
  • 贡献值0点
  • 好评度419点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-07-26 22:45
sysintr是ce自己定义的中断号,在系统初始化的时候和硬件中断对应起来,sysintr好像总共255(好像看到过一眼,记不清了:)),有的是用户自己定义来用的,你可以预先定义一个自己用(看了一下帮助说从SYSINTR_FIRMWARE+16开始可以定义来自己用,你可以查一下)
,也可以用api申请,多个sysintr可以共享一个硬件中断。

对于你需要的软件中断,你可以在isr中任意返回你需要的东西给系统来摸拟你需要的中断,但这也要建立在硬件的支持上,比如用某个事件的中断根据情况设置中断状态寄存器来触发另外一个中断(软中断)从而返回多种不同中断号
根据地的兄弟们,团结就是力量
wxl_50685330
论坛版主
论坛版主
  • 注册日期2002-11-19
  • 最后登录2018-09-25
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望521点
  • 贡献值0点
  • 好评度419点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-07-28 10:12
对不起,前面说错了,今天正好看到了
nkintr.h里面定义了最大可用的sysintr
#define SYSINTR_DEVICES     8
#define SYSINTR_MAX_DEVICES 32
#define SYSINTR_MAXIMUM    (SYSINTR_DEVICES+SYSINTR_MAX_DEVICES)
根据地的兄弟们,团结就是力量
zhangqb
驱动牛犊
驱动牛犊
  • 注册日期2002-10-16
  • 最后登录2011-01-26
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望10点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-12-29 18:11
Wince5.0中扩充到了64个
游客

返回顶部