关于2410中断中SRCPND和INTPND清零的疑问

发布于 2022-09-29 02:06:42 字数 863 浏览 17 评论 0

我对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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文