永发信息网

最近学习ARM7的中断。对于进入中断服务程序后的清除中断标志不是很明白,望解答!

答案:1  悬赏:20  手机版
解决时间 2021-02-05 17:35
最近学习ARM7的中断。对于进入中断服务程序后的清除中断标志不是很明白,望解答!
最佳答案
EXTINT 里面包含多个中断标志位的状态,每个位对应一种中断。如果有中断产生,里面的状态位就会置1。按你的代码是检查低位数过来第2位是否有中断产生。你看看那个位的中断标志是什么意思就知道是什么引起中断了。IO口产生的中断一般有两种,一种是边沿触发,一种是电平触发。你可以百度一下这两种区别,看你的提问,估计你是不了解这两者区别了,打起字来好累的!!!追问谢谢你的回答。是这样,这里是使用外部中断1(也就是低位数第二位就是)。使用电平触发。向EXTINT相应位置1是清除中断标志。按你的说法,检测这一位如果有中断产生,那么相应位就置1了,那么还将EXTINT= 0x02再置1有什么特殊的用处?
这里我疑问的是,电平触发时,在中断服务函数里,为什么这么清除中断标志。追答你看看芯片资料上面是怎么清中断标志的,往EXTINT相应位写1看看是不是清中断标志位。按理说应该有其它专门的寄存器清标志的。
如果你不清这个标志位,一但退出中断程序,又会马上跳进去。清了的话,就会等到下次被置位(触发)才进去。
如果外部一直是低电平,就算你清了也没用,一但退出中断程序,中断标志又被置位,这样又会进去了。追问


while((EXTINT&0x02)!=0) 
 { EXTINT=0x02; 
 }
程序就是说EXTINT的相应位置1时,才执行EXTINT= 0x02即再重新置1,这是什么道理呢?可能我还是哪里没理解吧,先调试调试
追答那里不就清清楚楚写着 “可向该位写入1将该位清零” 么 !!!

执行EXTINT= 0x02 就是清零

EINT1 置1是由硬件完成,并不是你软件能改变的。
EXTINT= 0x02 这句看上去像是把那个位置1,但这个写操作准确来说是清零。追问对啊,是清零啊。但是我有问题的是清零的条件,while((EXTINT&0x02)!=0)追答EXTINT&0x02)!=0 这个是一个读操作,如果你检查到那个位被置1了,你当然要去处理这个中断,你读的是一种状态。进去中断后,你要手动清除这种状态,就是那个清零的操作。否则你可以想像,在你退出中断之后,虽然你处理了一些事情,但是那个状态还没清除,那么硬件又会跳进去你的中断程序,继续处理。清除那个标示,就是告诉硬件,我已经做完了要做的,我清除标志了。追问不好意思,我没看完就追问了。估计我懂你的意思了。
就是说,外部电平变低,产生中断后,硬件置1EXTINT的相应位。程序里不断检测EXTINT相应位是否为1,如果为1,那么软件进行的写操作EXTINT= 0x02,将其中的位清零。这里的写操作实际上是将寄存器相应位清零是吧?这里就是我之前没理解的地方了追答是的就是那样。当然,真正写程序还不仅仅要清零,还要加入你自己要做的事情追问真的很感谢你耐心的解答,很赞。虽然我反反复复追问,但你的回答都很及时!耽误你的时间了,再次谢谢你!
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
小王,小张,小李三人在一起,其中一位是工人,一
请问从南苑机场到北京站怎么走最快啊?十一点
我是今年八月份拿的驾驶证里面有多少分
WD615.30发动机参数是什么
明年我准备去做业务员 是关于酒类方面的 然后
想把蛋拿掉,什么时间拿出来合适
各位:lv在法国可以退货不???很着急
海韵水产海参总汇地址在哪,我要去那里办事
陈浩民算一线明星吗?
东营广熙商贸有限公司地址有知道的么?有点事
东营飞鹭商贸有限公司地址在什么地方,想过去
鱼我所欲也第一自然段中的假设论证发起到什么
东营开发区鲁星商行地址有知道的么?有点事想
东营晴川商贸有限责任公司地址有知道的么?有
东营区战友礼品商行地址在哪,我要去那里办事
推荐资讯
宏辰·楿榭里停车场(出入口)地址好找么,
石柱土家族自治县公安局南宾派出所地址好找么
QQ自由幻想那里的火鸟蛋多啊`?
金蓉副食店地址在什么地方,想过去办事
帝方自操威柄是什么意思?
我家是做生意的别人用坏了我家的东西要赔吗
游仙慧居鱼馆这个地址在什么地方,我要处理点
dnf 现在不能给NPC送礼物了吗?
最近家里意外频发,我自己摔倒2次,儿子也摔
用DSP做图像处理,采用DSP+FPGA组合和采用DSP
82年阴历4月初7的女人感情会出轨吗
鑫达水暖地址有知道的么?有点事想过去
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?