关于2410中断中SRCPND和INTPND清零的疑问
我对s3c2410中断的理解如下:
已经设置cpsr为irq了
中断信号产生-> SRCPND相应位被设置为1 -> 如果没有被Mask -> priority仲裁 -> 设置相应的INTPND位 -> 设置OFFSET -> 跳转到中断程序去执行
我知道INTPND是很特殊的,它的清零的方式是往相应位写"1",所以一般都采用 INTPND = INTPND来清零
在实际写代码的时候我有个疑问:
SRCPND它是否也是特殊的?????
我看vivi代码里面它对SRCPND的清零方式是:
SRCPND |= irq_bit
这样的话,假设SRCPND=0x00000003的话
它是通过往相应位写“1”来清零的
而“详细了解 s3c2410 中断异常处理”里面的请零方式却是把相应位置“0”:
假设SRCPND=0x00000003,INTPND=0x00000001,该值说明当前0号中断和1号中断被触发,但当前正在被处理的是0号中断,处理完毕后我们应该这样设置INTPND和SRCPND:
SRCPND=0x00000002 //位0被置为0
INTPND =0x00000001 //位0被置为0(方法是往该位写入1)
究竟SRCPND的清零是往相应位写“1”还是写“0”????或者是往相应位写“0”和“1”都可以?????
望高手解答!!!!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论