4549|13

75

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

??怎样屏蔽外部中断?? [复制链接]

我用的是2450,要在某些时刻屏蔽外部中断0,5~13一共10个外部中断中的部分中断。

我想可能有两种方法吧(不知道是不是):
1.对中断寄存器操作;  2.调用API

对于第一种方法,我参考了一下三星的使用手册,知道关键是操作INTMASK寄存器。
但是EINT0,1,2,3各自占一位;EINT4~7占一位;EINT8~23占一位。

多个中断共用一位,我改怎么屏蔽其中的某几个中断呢??

或者有没有API能屏蔽和开通中断??

谢谢

最新回复

我上面写错了,刚才我再看了一下三星的说明书,应该就是这两个寄存器呢。哈哈,再看看  详情 回复 发表于 2009-8-22 14:56
点赞 关注

回复
举报

65

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
中断mask寄存器 操作即可。
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
另外,问一下INTPND寄存器看不懂它什么功能。说什么只能有一位置1?
英文原文:
the interrupt pending register shows whether the corresponding interrupt request, which is unmasked and waits for the interrupt to be serviced, has the highest priority.

INTPND显示对应的中断请求(前提是该中断没被屏蔽且正在等待处理)是否具有最高优先级。

有什么作用呢?谢谢
 
 
 

回复

89

帖子

0

TA的资源

一粒金砂(初级)

4
 
引用 1 楼 gooogleman 的回复:
中断mask寄存器 操作即可。


我看了INTMASK寄存器了,它是EINT0,1,2,3各自占一位;EINT4~7占一位;EINT8~23占一位。

那我怎么屏蔽器中的几位??比如屏蔽EINT5,6,8,9。
我要是把EINT4_7对应位和EINT8_23对应位置1了,那就一下子把4到23都屏蔽了。
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

5
 
引用 3 楼 larryk 的回复:
引用 1 楼 gooogleman 的回复:
中断mask寄存器 操作即可。


我看了INTMASK寄存器了,它是EINT0,1,2,3各自占一位;EINT4~7占一位;EINT8~23占一位。

那我怎么屏蔽器中的几位??比如屏蔽EINT5,6,8,9。
我要是把EINT4_7对应位和EINT8_23对应位置1了,那就一下子把4到23都屏蔽了。

屏蔽不了其中几位,置1都被屏蔽,置0都可用。硬件已经规定死了,不能改变了。
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

6
 
同意LS的说法,只能参考SPEC来做
 
 
 

回复

86

帖子

0

TA的资源

一粒金砂(初级)

7
 
直接设置cpsr不就可以了,LINUX的spin_lock_irq不就这样做的。
 
 
 

回复

51

帖子

0

TA的资源

一粒金砂(初级)

8
 
我想问一下InterruptDone()这个函数对InterruptDisable()有影响吗?

比如我用InterruptDisable()屏蔽了一个中断,后面对该中断执行InterruptDone(),
那这个中断就恢复使能了是吗?还是只能用InterruptEnable()来恢复使能??

谢谢
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

9
 
刚刚编译出错了,原来是没有InterruptEnable这个函数。

那莫非只能用InterruptDone()来清标志位和使能中断??
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

10
 
肯定是使用方法1,没有API可以使用,API是供应用程序调用的,应用程序不允许做这些操作。

InterupDone是BSP里面的一个函数,在处理完中断后调用。

至于你说的几个中断使用同一个MASK位的问题,你应该看另外一个寄存器,里面可以分别MASK,相当于这些中断分了2级,你应该到2级中去屏蔽,具体的寄存器记不清楚了,你去查一下。
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

11
 
引用 7 楼 larryk 的回复:
我想问一下InterruptDone()这个函数对InterruptDisable()有影响吗?

比如我用InterruptDisable()屏蔽了一个中断,后面对该中断执行InterruptDone(),
那这个中断就恢复使能了是吗?还是只能用InterruptEnable()来恢复使能??

谢谢


InterruptDone是在IST操作完成后,重新unmask 中断,可以等待下次中断的响应
---
InterruptDisable  就是在该 中断不用的时候永久mask中断,直到InterruptInitialize -->OEMInterruptEnable  ()来unmask中断


 
 
 

回复

54

帖子

0

TA的资源

一粒金砂(初级)

12
 
屏蔽EINT4~7 中断某一个看看
rEINTPEND                 
rEINTMASK
这两个
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

13
 
引用 11 楼 trueman_onlyme 的回复:
屏蔽EINT4~7 中断某一个看看
rEINTPEND?
rEINTMASK
这两个



谢谢各位指点。但是我找半天没找到具体那个寄存器,貌似也不是rEINTPEND rEINTMASK这两个寄存器。
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

14
 
我上面写错了,刚才我再看了一下三星的说明书,应该就是这两个寄存器呢。哈哈,再看看
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表