关于44B0中断-ads1.2

[复制链接]
2647|3
 楼主| ccxlslr 发表于 2009-5-1 11:31 | 显示全部楼层 |阅读模式
在ADS1.2&nbsp;C程序中,用__irq关键字后,会自动清除挂起中断吗?<br /><br />
dontium 发表于 2009-5-1 14:58 | 显示全部楼层

2440上的一段

In&nbsp;the&nbsp;interrupt&nbsp;service&nbsp;routine&nbsp;for&nbsp;a&nbsp;specific&nbsp;interrupt&nbsp;source,&nbsp;the&nbsp;corresponding&nbsp;bit&nbsp;of&nbsp;the&nbsp;SRCPND&nbsp;register&nbsp;has&nbsp;to&nbsp;be&nbsp;cleared&nbsp;to&nbsp;get&nbsp;the&nbsp;interrupt&nbsp;request&nbsp;from&nbsp;the&nbsp;same&nbsp;ource&nbsp;correctly.&nbsp;If&nbsp;you&nbsp;return&nbsp;from&nbsp;the&nbsp;ISR&nbsp;without&nbsp;clearing&nbsp;the&nbsp;bit,&nbsp;the&nbsp;interrupt&nbsp;controller&nbsp;operates&nbsp;as&nbsp;if&nbsp;another&nbsp;interrupt&nbsp;request&nbsp;came&nbsp;in&nbsp;from&nbsp;the&nbsp;same&nbsp;source.&nbsp;In&nbsp;other&nbsp;words,&nbsp;if&nbsp;a&nbsp;specific&nbsp;bit&nbsp;of&nbsp;the&nbsp;SRCPND&nbsp;register&nbsp;is&nbsp;set&nbsp;to&nbsp;1,&nbsp;it&nbsp;is&nbsp;always&nbsp;considered&nbsp;as&nbsp;a&nbsp;valid&nbsp;interrupt&nbsp;request<br />waiting&nbsp;to&nbsp;be&nbsp;serviced.
jzdata 发表于 2009-5-5 17:58 | 显示全部楼层

__irq

我程序里都没有&nbsp;__irq&nbsp;,试了一次,程序跑飞,赶紧改回来,具体问题没有深究。
myitlover 发表于 2009-5-7 09:08 | 显示全部楼层

中断进入后是需要压栈保护的

中断进入后是需要压栈保护的,而出中断是需要恢复现场的,如果加了__irq,这些工作由编译器自动完成,不加需要人工加的。<br /><br />如果不加__irq的话需要你人工加入保护代码,保护相关寄存器,从SVC模式切换到IRQ等过程,加到启动代码的IRQ中断处<br /><br />你可以反汇编看下加和不加__IRQ前后汇编代码的差别
您需要登录后才可以回帖 登录 | 注册

本版积分规则

68

主题

588

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部