如何触发硬中断?让其响应自己的ISR

fly@ 2007-05-24 04:28:09
某个嵌入CPU使用2个8259
编写watchdogtimer ,其 timeout时触发IRQ12
可是程序没有响应。
以下程序有问题,
ISR_OLD=getvect(12);
/* When IRQ12 is called, ISR() to print "HELLO "*/
disable();
setvect(12, ISR);
enable();
setvect(12,ISR_OLD);

请教达人
...全文
311 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
fly@ 2007-06-01
  • 打赏
  • 举报
回复
搞好了。谢谢各位
fly@ 2007-05-25
  • 打赏
  • 举报
回复
说错了,watchdogtimer触发的中断应该属于软中断。
fly@ 2007-05-25
  • 打赏
  • 举报
回复
CPU是我们公司自己开发得,基于x86指令系统的386架构工控cpu。
WatchdogTimer编程没有问题,在timeout时,按照它的方式字设置位触发IRQ12中断。

现在的问题,我想可能是中断号的问题,就是IRQ12 对应的是int ?
VCLIFE 2007-05-24
  • 打赏
  • 举报
回复
学习
fengdream 2007-05-24
  • 打赏
  • 举报
回复
什么cpu啊,定时器相关的寄存器配置都正确吗?
还有就是楼上所说的中断优先级匹配问题,会不会被高一级的中断破坏导致不触发中断。。。
spofmy 2007-05-24
  • 打赏
  • 举报
回复
不会 帮你顶
iu_81 2007-05-24
  • 打赏
  • 举报
回复
disable(); //防止你设置0a中断时被其它中断程序中断,必须先禁止其它中断
ISR_OLD=getvect(0x0a);
setvect(0x0a,ISR);
enable(); //这里再允许其它中断
       //DOS下0-255号中断大部分已被系统定义,你只能按它的定义来使
       //这是由硬件决定的,比如你想用一个简单的时钟中断,就可以用
//1c,具体该用多少号中断可以查DOS手册


setvect(0x0a, ISR_OLD); //同理,这理也就先禁止再开放中断

69,336

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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